博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习笔记(函数)
阅读量:6996 次
发布时间:2019-06-27

本文共 1251 字,大约阅读时间需要 4 分钟。

#1#参数仅包含必选参数def func(x,y):    y.append(x)    print("%s" % y)func(1,[])#>>[1]func(2,[])#>>[2]#2#参数包含必选和可选参数,带默认值的参数为可选参数#若参数默认值为可变对象,默认参数保留了每次函数调用的修改def func(x,y=[]):    y.append(x)    print("%s" % y)func(1)#>>[1]func(2)#>>[1, 2]#为了防止以上情况发生,默认值改为none,并在函数体内加入检查代码def func(x,y=None):    if y is None:        y=[]    y.append(x)    print("%s" % y)func(1)#>>[1]func(2)#>>[2]#3#函数参数调用,有两种方法,一种是使用位置参数,一种是使用关键字参数def foo(w,x,y,z):    passfoo(1,2,3,4)foo(1,2,z=4,y=3) #使用关键字参数时,参数的顺序并不重要#4#可变长参数列表,在定义函数时,使用*和**#使用*,将所有余下参数作为元组放入args变量,在函数内调用别的函数时,使用*args,将args元组重新转为参数列表,传递给被调用函数def foo1(x,*args):    print("foo1: p1=%s,p2=%s" % (x,args))def foo(w,x,*args):    print("foo: p1=%s,p2=%s,p3=%s" % (w,x,args))    foo1(x,*args)foo(1,2,3,4,5,6)#>>foo: p1=1,p2=2,p3=(3, 4, 5, 6)#>>foo1: p1=2,p2=(3, 4, 5, 6)#使用**,将所有余下的关键字参数作为字典放入kwargs变量def foo(w,x,**kwargs):    print("foo: p1=%s,p2=%s,p3=%s" % (w,x,kwargs))foo(1,x=2,y=3,z=4)#>>foo: p1=1,p2=2,p3={'y': 3, 'z': 4}#同时使用*和**def foo(w,*args,**kwargs):    print("foo: p1=%s,p2=%s,p3=%s" % (w,args,kwargs))foo(1,2,3,y=4,z=5)#>>foo: p1=1,p2=(2, 3),p3={'y': 4, 'z': 5}

闭包和装饰器的两篇不错的文章

https://foofish.net/understand-decorator.html

https://foofish.net/python-decorator.html

 

转载于:https://www.cnblogs.com/sky58/p/8323499.html

你可能感兴趣的文章