built-in函数
int() str() float() bool()
函数名可以赋值给变量,相当于alias
自定义函数
def function(x): if x<10: print('too low') else: print('good') return x+1
return用于返回函数,若无操作对象,则返回None,也可以返回多个值,tuple类型,也可以给多个变量
若在当前目录test.py中定义了function()函数,可以通过模块方式引用
>>>from test import function
无语句的缩进中可以用 pass过
if x>10:
pass
参数可以给予默认值
power(x,n=2)
n在调用时若不传递,则为2;不按顺序提供可选参数时,需要在调用时提供参数名。若默认参数指向可变对象,如list,则每次调用函数,均会使得可变对象发生改变。(传址)
def add_end(L=None):
if L is None:
L = []
L.append('END')
return L
L每次默认参数均为None,这样可以避免该问题。
可变参数标识,前缀*,可传入0-任意多参数
def sum_all(*numbers): sum=0 for num in numbers: sum=sum+num return sum
可以传入任意多个数字
如
sum_all(2,3,5,4)
若为list
l=[3,4,5,6,8]
sum_all(*l)
挂前缀传入
关键字参数,按字典进行组装
def test_student(name,gender,**kw) print('name:',name,'gender:',gender,'other:',kw)
调用时若传入其他参数
>>>test_student(‘Mike’,’Male’,city=’Beijing’)
name: Mike gender: Male other: {‘city’: ‘Beijing’}
直接传入dict则获得dict的拷贝(传值)
>>>test_student(‘Mike’,’Male’,**extra)
若通过*分隔,则定义了命名关键字参数
def test_student(name,gender,*,city)
命名关键字参数与位置参数不同,必须传入参数名
参数定义的顺序必须是:必选参数、默认参数、可变参数/命名关键字参数和关键字参数。
复习
*arg 可变参数,接受tuple
**kw 关键字参数,接受dict
递归超过一定栈帧长度会溢出,1000的阶乘是无法计算的。