命令行查看函数文档:help(function_name)
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
return [表达式]
结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。return
可以返回另一个函数- 函数体内使用
pass
占位,表示一个空函数 - 函数可以返回多个值,比如
return a, b
调用函数时可使用的正式参数类型:
- 必需参数:默认形式
- 关键字参数:显示的指定参数名
- 命名关键字参数
- 默认参数:函数可以指定参数的默认值,
- 默认参数必须指向不变对象
- 默认参数必须放在参数列表的最后面
- 不定长参数
对于关键字参数,函数的调用者可以传入任意不受限制的关键字参数,如果要限制关键字参数的名字,就可以用命名关键字参数, 例如,只接收 city 和 job 作为关键字参数。这种方式定义的函数如下:
# *后面的参数被视为命名关键字参数,命名关键字参数必须传入参数名,如果没有传入参数名,调用将报错。
def person(name, age, *, city, job):
print(name, age, city, job)
使用* 与 **
表示参数为不定长参数
def arg(name, *numbers, **address):
print(name)
print(numbers)
print(type(numbers))
print(address)
print(type(address))
* 与 **
的区别:
- 对于 *形参 python创建一个空的元组,然后把接收到的参数存储在元组中
- **形参接收的是字典
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。
但是参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数、关键字参数
。
def f1(a, b, c=0, *args, **kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
def f2(a, b, c=0, *, d, **kw):
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
python 使用 lambda 来创建匿名函数。所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
- lambda 只是一个表达式,函数体比 def 简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。