1. 函数是组织好的,可以重复使用的,用来实现单一或相关功能的代码段
2. 语法:
def 函数名(参数列表):
函数体
return XXX
def add(a,b):
return a+b
sum=add(11,12)
print(sum)
可以返回多个值,返回的多个值组成一个元组,返回值上加上一对中括号,则返回一个列表
函数分为定义和调用
def add(a,b):
print(a+b)
add(11,12)
3. 可更改(mutable)与不可更改(immutable)对象
在python中strings,tuples和numbers是不可更改的对象,而list,dict等则是可以修改的对象。
不可变类型:变量赋值a=5后在赋值a=10,这里实际是生成一个新的int值对象10,再让a指向它,而5被丢弃,不是改变a的值,相当于新生成了a
可变类型:变量赋值la=[1,2,3,4]后在赋值la[2]=5则是将list la的第三个元素值更改了,本身la没有动,只是其内部的一部分值被修改了。
4. 参数:
python的函数具有非常灵活的参数形态,既可以实现简单的调用又可以传入非常复杂的参数
一个*关键字参数,传值时可以传一系列值,也可以将一个元组或一个列表传进去但需要在前边加* 关键字参数要写在后面
也可以不传参
def a(*number): *在这里将参数归纳为一个元组
sum=0
for n in number:
sum= sum + n * n
return sum
mytuple=(1,2,3,4,5,6)
b=a(*mytuple) 此处*代表将元组中的元素依次取出
**为关键字参数,可以不传参,可以传多个,如果传参必须传键值对类型的参数
def person(name,age,**kw):
print('name: ',name,'age: ',age,'other',kw)
person('猴子','500',city='花果山')
mydic={"uname":"二狼神","sex":"男"}
person('猴子','500',city='花果山',**mydic)
#默认参数
def ault(uname,sex=None):
print(sex)
ault("lisi",sex="male")
默认参数:(缺省参数)默认参数必须写在后面,可以不指定参数名,但是顺序要保证,否则要指定参数名,默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误。