函数就是一段可以重复多次调用的代码,通过输入的参数值,返回需要的结果。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
Python中函数的定义
Python中函数的定义非常简单,使用关键字def定义。函数在使用前必须定义,函数的类型即返回值的类型。
Python函数定义的格式如下所示:
def 函数名(参数1, 参数2, ...):
函数体
函数名可以是字母、数字或下划线组成的字符串,但是不能以数字开头。函数的参数放在一对圆括号中,参数的个数可以一个或多个,参数之间用逗号隔开,这种参数称为形式参数,括号后面以冒号结束,冒号下面就是函数的主体。
Python中函数的参数
在C、C++中,参数的传递有值传递和引用传递两种方式。而Python中任何东西都是对象,所以参数只支持引用传递的方式。
Python通过名称绑定的机制,把实际参数的值和形式参数的名称绑定在一起。即把形式参数传递到函数所在的局部命名空间中,形式参数和实际参数指向内存中同一个存储空间。
函数的参数支持默认值。当某个参数没有传递实际的值时,函数将使用默认参数计算。
在开发中,常常需要传递可变长度的参数。在函数的参数前使用标识符“*”可以实现这个要求。“*”可以引用元组,把多个参数组合到一个元组中。
Python中还提供另一个标识符“**”。在形式参数前面添加“**”,可以引用一个字典,根据实际参数的赋值表达式生成字典。
def func(a, b=1, c=None):
print(a, b, c)
func('tool')
func('tool', b=188)
func('tool', b=188, c='.com')
print('----------')
def func1(a, *args, **kwargs):
print(a, args, kwargs)
func1('t', 'o', 'o', 'l')
func1('www', 'to', 'ol', url='.com')
输出结果为:
tool 1 None
tool 188 None
tool 188 .com
----------
t ('o', 'o', 'l') {}
www. ('to', 'ol') {'url': '.com'}
此外,必须要注意的是,“*”必须在“**”前面,这是语法规定。
Python函数的返回值
函数的返回使用return语句,return后面可以是变量或表达式。None是Python中的对象,不属于数字也不属于字符串。当函数中的return语句不带任何参数时,返回的结果也是None。
如果需要返回多个值,可以把这些值“打包”到元组中。在调用时,对返回的元组“解包”即可。
def func(a, b=1, c=10):
return a + 1, b + 2, c + 3
x, y, z = func(1, 8, 8)
print(x, y, z)
输出结果为:
2 10 11