python函数
内置函数
python里面直接调用函数,如:
abs(-100)
数据类型转换;
python内置的常用函数还包括数据类型转换函数,比如int()函数可以把其他数据类型转换为整数;
int('123') //123
int(12.34) //12
bool('') //False
函数名其实就是指向一个函数对象的引用,完全可以把函数名赋值给一个变量,相当于给这个函数起了一个别名;
a = abs
a(-1)
定义函数
在python中,定义一个函数要使用def语句;
def my_abs(x):
if x >= 0:
return x
else:
return -x
空函数:
如果想定义一个什么事也不做的空函数,可以用pass语句:
def nop():
pass
函数的参数:
位置参数:
def power(x,n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
默认参数:
我们可以在定义方法时,设置参数的默认值,如果有参数传进来,就用传进来的参数,不然就用默认值;
def pow(x,n = 2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
注:一:必选参数在前,默认参数在后,否则会报错;
二:如何设置默认参数;
定义默认参数要牢记一点:默认参数必须指向不变对象~
不然的话,函数会一直记住这个参数,每次都加一~
def add_end(L=[])
L.append('END')
return L
当你正常调用时,结果似乎不错;
add_end() //['END']
add_end() //二次调用,['END','END']
add_end() //三次调用,['END','END','END']
要修改上面的例子,我们可以用None这个不变对象来实现;
def add_end(L = None):
if L is None:
L = []
L.append('END')
return L
可变参数:我们可以定义可变参数,使传入的参数个数是可变的,我们可以在外面先设一个list或tuple传进去,通过改变list或tuple的参数来达到可变参数传入的效果;但是,我们也可以定义个*num来不限定你传入的参数,你在函数里面可以用一个for n in num来迭代你的数据;
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
关键字参数:我们前面讲的可变参数是允许你传入0个或多个参数,这些参数在传入时会自动组装成一个tuple,而关键字参数允许你传入0或多个key-value类型的参数,这些关键字参数会在传入之后自动组装成一个dict,也就是字典数据类型;
def person(name,age,**kw):
print('name',name,'age',age,kw)
和可变参数类似,也可以先组装出一个dict,然后,把该dict转换为关键字参数传进去;
命名关键字参数:我们要限制关键字参数的名字,就可以用命名关键字参数,只接受city和job作为关键字参数;
def person(name,age,*,city,job):
print(name,age,city,job)
这样,你在传入关键字参数的时候,就必须标明是city='Beijing'和job = 'Engineer';这样函数才会接受,不然是不会接受的;
person('Jack',24,city = 'Beijing',job='Engineer') //正解;
person('Jack',24,'Beijing','Engineer') //误解;