最常见的一种形式是的是为一个或者多个参数指定默认值,这会创建一个可以使用比定义时允许的参数更少的参数调用的函数,
def ask_ok(prompt, retries=4, reminder='Please try again!'): while True: ok = input(prompt) if ok in ('y', 'ye', 'yes'): return True if ok in ('n', 'no', 'nop', 'nope'): return False retries = retries - 1 if retries < 0: raise ValueError('invalid user response') print(reminder)
可以用以下三种调用方式:
默认值在函数定义作用域有效,因此:
i = 5 def f(arg=i): print(arg) i = 6 f()
打印为5
重要提醒:默认参数在定义时赋值,且仅仅赋值一次,当函数多次被调用,且并没有提供默认的参数值,就会从定义时赋值的地方取得值。即使函数中给默认参数重新赋值了,下次调用还是会从定义赋值的地方取得值!当默认参数为可变类型的list/dict等类型时,需要注意。
def f(a, L=[]): L.append(a) return L print(f(1)) print(f(2,[])) print(f(3))
输出为:
[1] [2] [1,3]
如果不想让默认值咋后续调用中累积,可以用如下写法:
def f(a, L=None): if L is None: L = [] L.append(a) return L
首先要理解可变对象与不可变对象可以参考http://blog.csdn.net/u014265088/article/details/52756442这篇文章
假如默认参数是可变对象,函数内对参数的改变会影响原始对象,下次调用函数默认参数已经被更改
假如默认参数是不可变对象,函数内对参数赋值时,参数会引用内存其他地方,下次调用函数时还是会从定义时赋值的地方取值。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Python进阶-函数默认参数(详解),包括了Python进阶-函数默认参数(详解)的使用技巧和注意事项,需要的朋友参考一下 一、默认参数 python为了简化函数的调用,提供了默认参数机制: 这样在调用pow函数时,就可以省略最后一个参数不写: 在定义有默认参数的函数时,需要注意以下: 必选参数必须在前面,默认参数在后; 设置何种参数为默认参数?一般来说,将参数值变化小的设置为默认
我们知道,在调用函数时如果不指定某个参数, Python 解释器会抛出异常。为了解决这个问题,Python 允许为参数设置默认值,即在定义函数时,直接给形式参数指定一个默认值。这样的话,即便调用函数时没有给拥有默认值的形参传递参数,该参数可以直接使用定义函数时设置的默认值。 Python 定义带有默认值参数的函数,其语法格式如下: def 函数名(...,形参名,形参名=默认值): 代码块
本文向大家介绍详细介绍Python函数中的默认参数,包括了详细介绍Python函数中的默认参数的使用技巧和注意事项,需要的朋友参考一下 最近我在一段Python代码中发现了一个因为错误的使用默认参数而产生的非常恶心的bug。如果您已经知道关于默认参数的全部内容了,只是想嘲笑一下我这可笑的错误,请直接跳到本文末尾。哎,这段代码是我写的,但是我非常确定那天我被恶魔附体了。你懂的,有时候就是这样。 本文
问题内容: 当我运行它时,它拒绝“ def a(…”,并用红色突出显示“(”。我不知道为什么。 问题答案: 让我在这里澄清两点: 首先,非默认参数不应跟随默认参数,这意味着您无法在函数中定义。在函数中定义参数的正确顺序为: 位置参数或非默认参数,即 关键字参数或默认参数,即 仅关键字参数,即 var-keyword参数,即 是位置参数 是可选参数 是关键字参数 是列表参数 仅限关键字 是var-k
本文向大家介绍Spring 注解编程模型相关知识详解,包括了Spring 注解编程模型相关知识详解的使用技巧和注意事项,需要的朋友参考一下 Spring 中有一个概念叫「元注解」(Meta-Annotation),通过元注解,实现注解的「派生性」,官方的说法是「Annotation Hierarchy」。 什么是元注解 所谓元注解,即标注在注解上的注解。这种方式所形成的注解层级结构中,元注解在层级
本文向大家介绍JSON相关知识汇总,包括了JSON相关知识汇总的使用技巧和注意事项,需要的朋友参考一下 JSON:JavaScript 对象表示法(JavaScript Object Notation) JSON 语法规则 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 JSON有6种类型的值: 对象、数组、字符串、数字、布尔值、null JSON对象是一个