函数
在程序中,函数就是具备某一功能且可以重复调用的代码片段,它能提高应用的模块性和代码的重复利用率以及可读性。
1. 自定义函数
在Python中定义一个函数要使用def语句。其基本格式为:
def 函数名(参数1,……,参数N):
函数体
函数如有返回值,Return[expression] 结束函数;不带return 表达式相当于返回None
在函数体前面经常使用三个双引号来解释说明函数,即是函数注释,其实注释在任何地方都可以放置,不过放置在函数体前面可以将来用于自动生成文档。Python函数体不能为空,可以用pass来占位。
def f1():
"""
这是对该函数的注释
:return:
"""
print('好帅')
def f1():
pass
2. 函数的调用
调用函数,只需要使用起函数名,同时如果有参数的话,传入实参即可。
3. 函数参数
3.1 位置参数
其实位置参数和其他语言中的形参一样。
# 其中name就是位置参数
def f2(name):
print(name)
3.2 默认参数
Python函数支持默认参数,即可以给函数的参数指定默认值。当该参数没有传入相应的值时,该参数就使用默认值。
def f2(name='大哥'):
print(name)
f2('帅哥')
f2()
注:
设置默认参数时,必选参数在前,默认参数在后,否则Python的解释器会报错;
定义默认参数要牢记:默认参数必须指向不可变对象!
3.3 可变参数
可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。其实我们用我们以前的知识也是可以实现类似一次传递多个参数的效果。比如传参的时候传入一个序列。
def f3(name):
print(name)
f3(['大哥', '小哥哥'])
但是,这样虽然能实现类似的功能,但是用起来确实也比较繁琐,因此Python提供了一种可变参数的书写方式来简化,其实在函数内部,参数是自动被放到一个元组中使用的。
def f4(age, *name):
print(name)
print(age)
f4(18, '大哥', '小哥哥')
f4(16)
3.4 关键字参数
关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
def f5(**name):
print(name)
# 可以无参数
f5()
f5(xx='xxxx')
# 可以多个参数
f5(xx='xxxx', yy='yyyy')
# 可以使用特定的调用模式将一个字典传入
names = {'xiaoming': '111', 'daming': '222'}
f5(**names)
3.5 命名关键字参数
有时候,我们作为函数的定义者,并不能控制函数调用者怎么往函数里面传参,传什么类型的参数。有些时候,用户并不一定会按照我们的要求去传参,因此按照我们的要求只接受我们需要参数这个功能十分有必要。这个功能在Python中使用的是命名关键词参数。它是在参数列表中有一个*号,*号以后的参数被视为命名关键字参数。
# age 和 sex 这两个参数必须传入
def f7(name, *, age, sex):
print(name)
print(age)
print(sex)
# age 和 sex 必须传入。
f7('大哥', sex='男', age='18')
f7('大哥', age='18', sex='男')
4. 返回多个值
def f8():
return 10,20
print(f8())
其实返回值是一个tuple(元组)。只是在语法上,返回一个tuple可以省略括号。