函数总结

函数是先定义在调用,定义阶段只检测语法,不执行代码

return能返回多个元素,元组的形式返回,也能返回列表,字典,只要是一个整体

 

 

在函数外定义的变量叫全局变量,在函数内定义的变量叫局部变量,从内向外找

列表和字典当全局变量时可以不用再函数里加global

 

形参里的叫缺省参数,也叫默认参数,实参里的是命名参数,如果要指定传给哪个变量,变量名必须和形参相同

 

 

不定长参数,args接收多余的参数

def test(a,b,c=33,*args):
    print(a)
    print(b)
    print(c)
    print(args)

test(11,22,33,44,55,66)
"""
11
22
33
(44, 55, 66)
"""

 

这样A,B会全部被*args接受

def test(a,b,c=33,*args,**kwargs):
    print(a)
    print(b)
    print(c)
    print(args)
    print(kwargs)
A=(44,55,66)
B={'name':'laowang','age':18}
test(11,22,33,A,B)

"""

11
22
33
((44, 55, 66), {'name': 'laowang', 'age': 18})
{}


"""

 

 

在元组前面加上*,在字典前面加上**,就能表示元组被args接收,字典被kwargs接收,也叫解包

def test(a,b,c=33,*args,**kwargs):
    print(a)
    print(b)
    print(c)
    print(args)
    print(kwargs)
A=(44,55,66)
B={'name':'laowang','age':18}
test(11,22,33,*A,**B)

"""

11
22
33
(44, 55, 66)
{'name': 'laowang', 'age': 18}


"""

 

 

匿名函数当做实参传递

def test(a,b,func):
    result=func(a,b)
    return result
num=test(11,22,lambda x,y:x+y)
print(num)

 

 

动态语言的特性,自定义函数的功能

def test(a,b,func):
    result=func(a,b)
    return result

func_new=input('请输入一个匿名函数:')
func_new=eval(func_new)
num=test(11,22,func_new)
print(num)

 

posted @ 2018-12-09 14:33  Operater  阅读(159)  评论(0编辑  收藏  举报