4. 函数
4.1调用函数
- help(fun)查看fun函数帮助信息
- abs(parm)
- max(parm1, parm2,…, paramn)
- 数据类型转换int(), float(), str(), bool()
- 函数对象引用
>>> a = abs # 变量a指向abs函数
>>> a(-1) # 所以也可以通过a调用abs函数
1
4.2 定义函数
4.3函数的参数
4.3.1 位置参数
- 传入参数按位置依次赋值
4.3.2 默认参数
- 必选参数在前,默认参数在后
- 定义默认参数要牢记一点:默认参数必须指向不变对象!
4.3.3 可变参数
-
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple
-
def fun(*param)
fun(1, 2)
nums = [1, 2, 3]
fun(nums[0], nums[1], nums[2])
fun(*nums)
4.3.4 关键字参数
-
关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
def person(name, age, **kw):
-
可以先组装出一个dict,然后,把该dict转换为关键字参数传进去
>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
4.3.5 命名关键字参数
-
到底传入了哪些关键字,就需要在函数内部通过
kw
检查。这样很麻烦,如果限制关键字参数的名字,就用命名关键字参数def person(name, age, *, city, job): print(name, age, city, job)
-
调用方式如下:
>>> person('Jack', 24, city='Beijing', job='Engineer') Jack 24 Beijing Engineer
-
如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符
*
了def person(name, age, *args, city, job): print(name, age, args, city, job)
-
命名关键字参数可以有缺省值,从而简化调用:
def person(name, age, *, city='Beijing', job): print(name, age, city, job)
4.3.6 参数组合
- 参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
- 对于任意函数,都可以通过类似
func(*args, **kw)
的形式调用它,无论它的参数是如何定义的
4.4 递归函数
参考教程
(转载整理自网络,如有侵权,联系本人删除,仅供技术总结使用)