函数

  • 以功能为导向,注册,登录,计算长度等

  • 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文件里
  • 局部命名空间:
posted on 2020-07-06 19:45  94小渣渣  阅读(127)  评论(0编辑  收藏  举报