Python中定义函数默认参数值的使用注意事项?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中定义函数默认参数值的使用注意事项?相关的知识,希望对你有一定的参考价值。
4.7.1. 默认参数值最常用的一种形式是为一个或多个参数指定默认值。这会创建一个可以使用比定义是允许的参数更少的参数调用的函数,例如:
def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
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 OSError('uncooperative user')
print(complaint)
这个函数可以通过几种不同的方式调用:
只给出必要的参数:
ask_ok('Do you really want to quit?')
给出一个可选的参数:
ask_ok('OK to overwrite the file?', 2)
或者给出所有的参数:
ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')
这个例子还介绍了 in 关键字。它测定序列中是否包含某个确定的值。
默认值在函数 定义 作用域被解析,如下所示:
i = 5
def f(arg=i):
print(arg)
i = 6
f()
将会输出 5。
重要警告: 默认值只被赋值一次。这使得当默认值是可变对象时会有所不同,比如列表、字典或者大多数类的实例。例如,下面的函数在后续调用过程中会累积(前面)传给它的参数:
def f(a, L=[]):
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
这将输出:
[1]
[1, 2]
[1, 2, 3]
如果你不想让默认值在后续调用中累积,你可以像下面一样定义函数:
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L 参考技术A 列前因后果的重要事件统统反映出来。他目前还处在收集资料那个欢乐阶段;许多心地善良的小伙子看到普宁在图书馆里挖掘资料那副样儿都感到是桩乐事和莫大的荣幸,只见他从一个综合目录柜里抽出一盒卡片,就好象它是个大核桃,把它抱到一个僻静的旮旯里去,在那儿静静地咀嚼这份精神食粮,时而抿动嘴唇,作出无声的品评,有批评性的、有满意的、有困惑不解的,时而又扬起他那两道稀疏的眉毛,久久地高高吊在宽脑门上,干脆把它忘在那儿啦,一直要等到脸上不愉快或怀疑的痕迹全部消逝之后,那两道眉毛才安然落下。他来到温代尔,的确很幸运。十九世纪九十年代有一位杰出的斯拉夫语研究家兼藏书家,名叫约翰?索斯顿?陶德(他那个带胡子的半身雕塑像如今屹立在那个饮用喷泉的上方),访问过殷勤好客的俄国,在那儿收集了大批书籍,自从他去世之后,那批书就悄悄地给挪到一个老远的书架那边去了。普宁为了避免让铁书架上的amerikanski①电流抽不冷子刺一下,会戴上橡皮手套走到那边去,贪婪地盯视那些出版物,其中有十九世纪咆哮的六十年代出版的不知名刊物啦,都用云纹硬纸板精装了起来;一百年前的历史专题著作啦,沉睡的书页上都有了褐斑霉点;俄罗斯古典文学著作啦,精装的封面上装着作者满面愁容、糟透了的浮雕像,那些诗人的侧身像叫两眼湿润的铁莫菲想起他的童年,那时候他可以悠闲自在地摸摸封面上那①俄语:美国的。
从0开始的Python学习009参数
默认参数
对于参数有时候我们希望他是可选的,前面介绍了函数柯里化,当然还有其他的解决方案。如果不想给某些参数提供值的话,就让这写参数使用默认值。在函数定义的时候给参数赋值使用(参数,参数=值......),从而给形参指定默认值。
注意默认参数的值是一个不可变的参数(也就是说默认参数是一个确定的值)。
#默认参数值 #对于参数 我们希望参数值是可选的智能的,如果使用者没有提供参数值的时候,程序会使用默认的参数。使用的方法就是在函数定义形参的时候写上(形参=默认值)即可 #注意默认值的参数不可变 def say(message,times = 1): print(message*times) say(‘Hello‘) say(‘World‘,5) #注意默认值参数只能是末尾的形参
运行结果
重要
只有在形参表末尾的那些参数可以有默认参数值,即你不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的形参。
这是因为赋给形参的值是根据位置而赋值的。例如,def
func(a, b=5)
是有效的,但是def func(a=5, b)
是 无效 的
关键参数
对于多参数的函数,我只想指定某个或某几个参数的值,这时就可以使用命名给参数赋值,这样被复制的参数时关键参数。我们是使用关键字(参数名)而不是参数的位置来给函数指定实参。
优势
1.不用担心参数的顺序,使使用函数变得简单。
2.假设其他的参数都有默认值,我们可以只给我们想要的参数赋值。
print(‘========关键参数=========‘) #如果你的某个函数有许多参数,而你只想指定其中的一部分,那么你可以通过命名来为这些参数赋值——这被称作 关键参数 ——我们使用名字(关键字)而不是位置(我们前面所一直使用的方法)来给函数指定实参。 def func(a,b = 5,c = 10): print(‘a is‘,a,‘and b is‘,b,‘and c is‘,c) func(3,7) func(25,c = 24) func(c = 50,a = 100)
运行结果
以上是关于Python中定义函数默认参数值的使用注意事项?的主要内容,如果未能解决你的问题,请参考以下文章