函数
-
以功能为导向,注册,登录,计算长度等
-
print() len() 都是函数
-
减少代码重复性
-
增强代码的可读性
-
结构:def 函数名():
-
函数名可描述性,函数中尽量不出现print
-
函数返回值:返回多个元素,以元组的形式,可以直接拆包
-
result1,result2,result3=function() #返回的3个元素分别给到前面的3个变量
-
返回空 直接一个return
函数的参数
-
函数创建原则:函数写好以后,尽量不动里面的代码,需要处理的数据,可以做为参数传递
-
参数:实参,形参
-
实参:位置参数 ,括号内从左到右一一对应
-
实参:关键字参数, com(a=5,b=2) ,把实参给形参
-
实参:混合参数,位置参数要在关键字参数前面
-
默认参数 放在参数列表最后面
-
函数中万能参数 *args ,函数的定义时,星号代表聚合,将所有位置参数聚合成一个元组,赋值给args
def sum(*args):
count = 0
for i in args:
count+=int(i)
return count
print(sum(1,2,3,4,5)) # return 15
- 函数中**kwargs 参数,将所有关键字参数聚合到一个字典中,将这个字典赋值给了kwargs
def func(**kwargs):
print(kwargs)
func(name='Tom',age=25,sex='boy') # return {'name': 'Tom', 'age': 25, 'sex': 'boy'}
def func(*args,**kwargs): #前面args接受所有位置参数,后面kwargs接受所有关键字参数
print(args)
print(kwargs)
- 形参角度的参数的顺序
def func(a,b,*args,sex='boy'): #args 接受所有位置参数
print(a,b) # return 1,2
print(sex) #return boy
print(args) #return (3,4,5)
func(1,2,3,4,5)
def func(a,b,*args,sex='boy',**kwargs): #args 接受所有位置参数
print(a,b) # return 1,2
print(sex) #return girl
print(args) #return (3,4,5)
print(kwargs) #return {'name': 'Tom'}
func(1,2,3,4,5,sex='girl',name='Tom')
def func(a,b,*args,sex='boy',c,**kwargs): # 仅限关键字参数 c在调用函数时 必须传实参给他
print(a,b) # return 1,2
print(sex) #return girl
print(args) #return (3,4,5)
print(kwargs) #return {'name': 'Tom'}
print(c) #return 666
func(1,2,3,4,5,sex='girl',name='Tom',c='666')
# 函数调用时 加一个*或者两个*是打散的效果
def func(*args):
print(args)
func([1,2,3],[4,5]) #return ([1, 2, 3], [4, 5])
def func(*args):
print(args)
func(*[1,2,3],*[4,5]) #return (1, 2, 3, 4, 5)
def func(*args,**kwargs):
print(args) #return ({'name': 'Tom'}, {'age': 25}) 是个元组
print(kwargs) #return {}
func({'name':'Tom'},{'age':25})#字典传过去 给 *args ,如果是等式传过去 给**kwargs
def func(*args,**kwargs):
print(args) #return ()
print(kwargs) #return {'name': 'Tom', 'age': 25}
func(**{'name':'Tom'},**{'age':25})
命名空间
- 全局命名空间:记录变量值和函数名和函数体的空间,程序结束,释放,都在一个py文件里
- 局部命名空间: