码迷,mamicode.com
首页 > 编程语言 > 详细

python学习笔记(函数)

时间:2018-01-21 11:06:23      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:blog   def   append   python   修改   *args   关键字   python学习   默认   

#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):
    pass
foo(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}

 

python学习笔记(函数)

标签:blog   def   append   python   修改   *args   关键字   python学习   默认   

原文地址:https://www.cnblogs.com/sky58/p/8323499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!