定义函数
基础语法
1 | def my_fun(arg): |
如果没有写return
语句,函数执行之后会返回None
函数的返回值
可以有多个返回值,但是多个返回值默认是以元组的方式返回,相当于返回了一个元组
1 | def my_fun3(arg1, arg2): |
空函数
1 | def my_fun2(): |
调用函数
function_name()
是调用函数的基本语法
- function_name 是函数的名字(可以使自定义函数,可以使内置函数,可以使第三方模块中的函数)
- () 括号里放的是该函数的参数,如果没有参数,可以为空
1 | def my_fun4(): |
函数的参数
默认参数
拿一个简单的幂运算举例n=2
即为默认参数,在调用该函数时,如果只指定了一个参数,那变量n
将默认等于2
1 | def my_fun6(x, n=2): |
也可以将两个参数都设置有默认变量,这样该函数即使不传参,也能正常工作
1 | my_fun6() |
使用默认参数的注意事项
必选参数在前,默认参数在后,否则Python解释器会报错
当函数需要多个参数的时候,将变化较大的参数放在前面,变化小的放在后面作为默认参数
默认参数必须指向不可变对象(eg: int, string, float)
可变参数
可以折衷地使用列表或元组实现可变长参数
(以下交互终端使用了ipython)
1 | In [1]: def cal(numbers): |
可变参数的关键字为*
星号。在设置函数的接收参数时,前面加上一个星号,则函数内部接收到的所有参数会自动转化为一个元组
1 | In [5]: def cal(*numbers): |
1 | In [9]: def cal(*numbers): |
关键字参数
可变长参数传入到函数内部会自动转换成一个元组
;而关键字参数传入到函数内部会自动转换成一个字典
关键字参数的关键字是**
两个星号
1 | In [12]: def person(name, age, **otherkeyword): |
参数组合
上面提到了四种参数(必选参数、默认参数、可变参数、关键字参数),这四种参数可以一起使用。
参数定义的顺序必须是:必须参数、默认参数、可变参数、关键字参数
1 | In [21]: def func(a, b, c=0, *args, **kw): |
注意
*args是可变参数,接收一个tuple
**kw是关键字参数,接收一个dict
在必选参数,默认参数,可变长参数和关键字参数混合使用时,默认参数在复制时不要指定参数名,如上例的
c=3
否则会报错
常用内置函数
isinstance
isinstance函数判断对象类型
1 | class obj1: |