Python-搞懂多种函数参数的用法

Python-搞懂多种函数参数的用法

参数作为函数调用中传递给函数体的数据,具有多种形式,在函数定义中可分为:普通参数、默认值参数、args参数、kwargs参数,在函数调用中:位置参数、关键字参数。

接下来,该博文叙述上述参数的用法及其特性。

1 普通参数

def Print(line,grid):
    print(line.center(grid))

Print('hello word !!!',100)
                                           hello word !!!                                           

当我们需要将输出居中时,我们自然而然想到创建函数方便我们输出。Print函数定义中有俩个普通参数,调用时顺序传入即可(也就是位置参数)。

2 默认参数

def split(line ,delimiter=','):
    return line.split(delimiter)

split('I walk , you run , I sorry')
['I walk ', ' you run ', ' I sorry']

当函数调用时某一变量一般不变,不妨在定义时设定其默认值。

3 注意可变对象作为默认参数时引发的异常

def foo(a,item=[]):
    item.append(a)
    return item
print (foo(1))
print (foo(2))

#正确的写法
def fooo(a,item=None):
    if item==None:
        item=[]
    item.append(a)
    return item
print (fooo(2))
print (fooo("fdsfd"))
[1]
[1, 2]
[2]
['fdsfd']

在python中,一切可称为对象。依据可变性,对象分为可变对象和不可变对象,可变对象包含列表、字典,类的对象等等。若想传入一个可变对象,一定要注意上面的情况。

4 位置参数和关键字参数

def fo(a,b,c=1,d=2):
    pass 

fo(1,2,c=3)

在调用时,形如 b=1 的即为关键字参数,其余的为位置参数。关键字参数位置可随意,但必须传入所有必须的参数(默认参数可选择不传入),可以参照如下原则:

  • 函数调用时,参数一一对应到函数定义的参数。故函数定义中,普通参数优先出现在函数开头,带有默认参数放在后面。在函数调用中,位置参数和先行,关键字参数后行。

5 args参数

def write(out,fmt,*args):
    print(type(args),args)
    out.write(fmt%args)

with open ("te.txt","w") as f:
    write(f,"%d %s %s",2,"2013","yunge")
 (2, '2013', 'yunge')

args参数也称元组参数,因为args在函数体中就是元组。函数调用时,参数一一对应完函数定义中的args参数前的参数(包括普通参数和默认值参数)后,将函数调用中其剩余的除了关键字参数放入args参数,即所有额外的除了关键字参数放入args参数。也就意味着可以接受任意数量的参数。

6 kwargs参数

def f2(a,b,**kwargs):
    print(type(kwargs),kwargs)
    name=kwargs.pop("name","None")
    print (name)

f2(1,2,name="yunge")
 {'name': 'yunge'}
yunge

kwargs参数也称字典参数,因为其在函数体中是字典。所有额外的关键字参数放入kwargs字典中,同样可以接受任意数量的关键字参数。

谢谢大家的浏览,
希望我的努力能帮助到您,
共勉!

你可能感兴趣的:(Python)