Python_参数传递

      Python的参数传递很有趣的样子,记一下。

位置参数

#位置参数,通过位置对应传递参数
>>>def try(name,age):
... first,second=name,age
... print 'first=%s,second=%d' % (first,second)
>>>try('sam',3)
>>>first=sam,second=3
#位置参数,若有默认参数而调用时没有给出,则使用默认值,若给出,则把默认值覆盖
>>>def try(name,age=12)
...    first,second=name,age
...    print 'first=%s,second=%d' % (first,second)
>>>try('sam')
>>>first=sam,second=12
>>>try('sam',21)
>>>first=sam,second=21

 
 

关键字参数

#关键字参数,通过位置对应传递参数
>>>def try(name,age):
... first,second=name,age
... print 'first=%s,second=%d' % (first,second)
>>>try(age=3,name='sam')
first=sam,second=3
#关键字参数,若有默认参数而调用时没有给出,则使用默认值,若给出,则把默认值覆盖
>>>def try(name,age=12):
...    first,second=name,age
...    print 'first=%s,second=%d' % (first,second)
>>>try(name='sam')
first=sam,second=12
>>>try(age=21,name='sam')
first=sam,second=21

 
 

       当然推荐是使用关键字参数,否则如果使用位置参数,谁都不知道会给函数参数传入什么值。同时使用位置参数和关键字参数也行,这时就必须注意要把位置参数放在关键字参数前。

       接下来就是非常有趣的语法了,在python中只要像下面这样定义函数时

>>>def try(*parameter):
...    print parameter
>>>try(1,2,3)
(1,2,3)</span>
       突然发现怎么可以传入多个参数了?就是因为参数前的星号可以将所有值打包为一个元组,然后作为一个参数传入进入函数,所以打印出来的就是一个元组形式。

>>>def try(*parameter):
...    print parameter
>>>try(x=1,y=2,z=3)
Traceback <most recent calls last>:
  File"<stdin>",line 1,in <moudle>
TypeError:try<> got an expected keyword argument'x'
       不是可以传入多个值的吗,怎么又出错误了,其实仔细观察就会发现前面的例子都只是传入位置参数,那么传入关键字参数就不行了么?放心,这个问题早就给你解决好了。你只需要使用两个星号就OK了

>>>def try(*parameter):
...    print parameter
>>>try(x=1,y=2,z=3)
{'y'=2,'z'=3,'x'=1}

       这下就行了,只是返回的不再是元组而是字典了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值