一、函数默认参数值
对于一些函数来说,你可能会希望使一些参数可选并使用默认的值,以避免用户不想为它们提供值的情况。「默认参数值」可以有效帮助解决这一情况。你可以通过在函数定义时附加一个赋值运算符(=)来为参数指定默认参数值。要注意到,默认参数值应该是常数。更确切地说,默认参数值应该是不可变的。
案例(保存为function_default.py)
def say(message,times=1):
print(message *times)
say(‘hello’)
say(‘world’,5)
输出:
$ $python function_default.py
hello
worldworldworldworldworld
工作原理
名为 say 的函数用以按照给定的次数打印一串字符串。如果我们没有提供一个数值,则将按照默认设置,只打印一次字符串。我们通过为参数times指定默认参数值1来实现这一点。 在第一次使用say 时,我们只提供字符串因而函数只会将这个字符串打印一次。在第二次使用say 时,我们既提供了字符串,同时提供了一个参数5,声明我们希望说(say)这个字符串5次。 注意:只有那些位于参数列表末尾的参数才能被赋予默认参数值,即在函数的参数列表中拥有默认参数值的参数不能位于没有默认参数值的参数之前。
这是因为值是按照参数所处的位置依次分配的。举例来说,def func(a,b=5)是有效的,但是def func(a=5,b)是无效的。
二、关键字参数
如果你有一些具有许多参数的函数,而你又希望只对其中的一些指定,那么你可以通过命名它们来给这些参数赋值——这就是「关键字参数」(Keyword Arguments)——我们使用命名关键字而非位置来指定函数中的参数。
这样做有两大优点——第一,我们不再需要考虑参数的顺序,函数的使用将更加容易。第二,我们可以只对那些我们希望赋予的参数以赋值,只要其它的参数都具有默认参数值。
案例(保存为function_keyword.py)
de 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 function_keyword.py
a is
3
and b is
7
and c is
10
a is
25
and b is
5
and c is
24
a is
100
and b is
5
and c is
50
工作原理
名为func的函数有一个没有默认参数值的参数,后跟两个各自带有默认参数值的参数。在第一次调用函数时,func(3,7),参数a获得了值3,参数b获得了值7,而c获得默认参数值10。 第二次调用函数时,func(25,c=24),由于其所处的位置,变量a首先获得了值25。然后,由于命名关键字参数,变量c获得了值24。变量b获得默认参数值5。在第三次调用函数时,func(c=50,a=100),我们全部使用关键字参数来指定值。在这里要注意到,尽管a在c之前定义,但我们还是在变量a之前指定了变量c。
三、可变参数
有时候你可能想定义的函数里面能够有任意数量,也就是参数数量是可变的,这可以通过使用星号(*)来实现。
案例(保存为你function_varargs.py)
de def total(a=5,*numbers,**phonebook)
print(‘a’,a)
#遍历元组中的所有项目
for single_item in numbers:
print(‘single_item’,single_item)
#遍历字典中所有项目
for first_part,second_part in phonebook.items():
print(first_part,second_part)
print(total(10,1,2,3,Jack=1123,John=2231,Inge=1560))
输出:
$ python function_varargs.py
a 10
single_item 1
single_item 2
single_item 3
Inge
1560
John
2231
Jack
1123
None
工作原理
当我们声明一个诸如, param的星号参数时,从此处开始直到结束的所有位置参数(Positional Arguments)都将被收集并汇成一个称为「param」的元组。 类似地,当我们声明一个例如,*param的双星号参数时,从此处开始直到结束的所有关键字参数都将被收集并汇集成一个名为param的字典。
四、return 语句
Return语句用于从函数中返回,也就是中断函数。我们也可以选择在中断函数时从函数中返回一个值。 案例(保存为function_return.py)
def maximum(x,y):
if x > y:
return x
elif x == y:
return ‘The numbers are equal’
else:
return y
print(maximum(2,3))
输出:
$ python function_return.py
3
工作原理
maximum函数将会返回参数中的最大值,在本案例中是提供给函数的数值。它使用一套简单的if...else 语句来找到较大的那个值并将其返回。
要注意到如果return语句没有搭配任何一个值则代表着返回None。None在Python中一个特殊的类型,代表着虚无。举个例子,它用于指示一个变量没有值,如果有值则它的值便是None。
每一个函数都在其末尾隐含了一句 return None,除非你写了你自己的return语句。你可以运行print(somefunction()),其中somefunction函数不使用return语句,这像这样:
def some_function():
Pass
Python中的pass语句用于指示一个没有内容的语句块。提示:有一个名为max的内置函数已经实现了“找到最大数”这一功能,所以尽可能地使用这一内置函数!
五、总结
通过这两篇Python函数的讲解,我们已经了解了许多方面的函数,但我们依旧还未完全覆盖到所有类型的函数。不过,我们已经覆盖到了大部分你每天日常使用都会使用到的Python函数。
End
来都来了,点赞、转发一下呗~