python 形参_python中参数总结

一、形参和实参

函数参数的作用是传递数据给函数使用。

在使用的过程中,参数有两种形式:形式参数和实际参数

形参:定义函数时的参数

实参:调用函数时的参数

根据实际参数类型不同,将实际参数传递给形参的方式有两种:值传递和引用传递

值传递:实参为不可变对象,传递给形参后,形参的值改变,实参值不变。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。

引用传递:实参为可变对象,传递给形参后,形参的值改变,实参值改变。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响

#值传递与引用传递

defdemo(obj):printobj

obj+=obj

obj1="123456"demo(obj1)print "函数调用后obj1:"+obj1

obj2=[1,2,3]

demo(obj2)print "函数调用后obj2:"+str(obj2)#结果

123456函数调用后obj1:123456[1, 2, 3]

函数调用后obj2:[1, 2, 3, 1, 2, 3]

二、位置参数、关键字参数、默认参数、可变参数

1.位置参数(必备参数)

函数调用时的数量,位置,参数类型必须和定义时的一致。

2.关键字参数

函数调用时,使用形参的名字=输入的参数值,此时位置可与定义时不一致。

3.默认参数

函数定义时,为参数设置一个默认值,当函数调用时,没有传入这个参数值,直接使用这个默认值。注意:

定义函数时,默认参数必须指向不可变对象;如果指向可变对象,多次调用,可能得到的不是意料之内的结果。

#默认参数必须指向不可变对象,如果指向可变对象,结果不对

def demo1(obj=[]):printobj

obj.append(1)def demo2(obj=None):if obj==None:

obj=[]printobj

obj.append(1)

demo1()

demo1()

demo1()

demo2()

demo2()

demo2()#结果

[]

[1]

[1, 1]

[]

[]

[]

4.可变参数(不定长参数)

可变参数有两种形式:一种是*args,另一种是**kwargs

*args:这种形式表示接受任意多个实际参数将其放到一个元组中。

**kwargs:这种形式表示接受任意多个实际参数将其放到一个字典中,类似关键字参数

#可变参数#*args形式

def demo3(*args):print "\n I like coffee:"

for i inargs:printi,#调用形式:可直接传一个tuple

demo3('巴西','土耳其')#也可以通过list或者tuple的变量传

obj1=['蓝山','摩卡','卡布奇诺']

demo3(*obj1)#**kwargs形式

def person(name, age, **kw):print'\n name:', name, 'age:', age, 'other:', kwdef demo4(**kwargs):print "\n name:age"

for i,j inkwargs.items():print i,':',j#调用:可直接传一个字典

person("Paul",77,sex="male",job="teacher")#也可以通过字典变量传

obj2={'Mary':23,'HanMeiMei':34,'Lily':12}

demo4(**obj2)#结果

I like coffee:

巴西 土耳其

I like coffee:

蓝山 摩卡 卡布奇诺

name: Paul age:77 other: {'job': 'teacher', 'sex': 'male'}

name:age

Lily :12Mary :23HanMeiMei :34

三、参数组合

在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数组合使用。但是注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、关键字参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值