调用函数
既是调用函数,显然是有两种情况:调用内置函数,调用自定义函数。
两者都仅需要知道:函数名+参数。函数名需要注意大小写,参数需要注意参数数量和数据类型
函数的引用
这里提到一个方法,用变量名来指向一个函数
基本数据类型的转换:
转为整数类型:int( )
转为字符串类型:str( )
转为浮点数类型:float( )
函数的定义
语法:
def 函数名(变量名,变量名) :
函数体
函数可以设置return值,如果不设置return值或直接return,那么函数会返回None。return返回多个值,C中需要设置全局变量或返回数组的指针,而python可以直接返回多个值,但其实就是一个tuple
空函数:
def 函数名(变量名,变量名) :
pass
python只能检查函数参数的数量是否正确,无法检查函数的参数数据类型是否正确,就需要我们对完善函数,增加容错率。
例子:一元二次方程
函数的参数
位置参数:按位传入
调用函数时,值按顺序传入对应参数。
def one(a,b,c):
函数体
one(x,y,z)
此时x,y,z按顺序依次传入a,b,c
默认参数:
def one(a,b,c=2):
函数
one(x,y) 或 one(x,y,z)都是可行的,在没有检测到第三个参数时,使用参数的默认值。必选参数在前,默认参数在后。
如果默认参数在前,遵循按位传入的原则,那么是会默认赋值给在前的参数,即就会赋值给默认参数,那么其存在的意义就没有了。
其次,若存在多个默认参数
def one(a,b,c=2,d=3,e=4):
函数体
可以直接给默认参数赋值:one(1,2,d=7),这样的话,参数c和e依旧采用默认的值。
默认参数是可变的
可变参数
传入参数的个数是可变的,也可以不传入
可以传入list或tuple,设置list/tuple参数:
设置为可变参数:
这里有一个list或tuple,带可变参数的函数该如何使用呢?
关键字参数
允许传入0个或者多个参数含参数名的参数,并组装成一个dict,在参数名前加 ** 代表关键字参数
同样,可以直接写一个dict,然后**来传入关键词参数
命名关键字参数
命名关键字参数之后,可以指定接收的关键字参数名,* 号之后命名关键字参数即可
如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符 *
参数的组合
小作业,多个数的乘积,第一个if语句,如果改成x==None,就是错误的
补充:
递归函数
在函数内部调用自己,就称为递归函数。