首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python基础教程 分配参数

6.4.5 分配参数

前面介绍了如何将参数收集到元组和字典中,但用同样的两个运算符(*和**)也可执行相反的操作。与收集参数相反的操作是什么呢?假设有如下函数:

def add(x, y):

return x + y

注意 模块operator提供了这个函数的高效版本。

同时假设还有一个元组,其中包含两个你要相加的数。

params = (1, 2)

这与前面执行的操作差不多是相反的:不是收集参数,而是分配参数。这是通过在调用函数(而不是定义函数)时使用运算符*实现的。

>>> add(*params)

3

这种做法也可用于参数列表的一部分,条件是这部分位于参数列表末尾。通过使用运算符**,可将字典中的值分配给关键字参数。如果你像前面那样定义了函数hello_3,就可像下面这样做:

>>> params = {'name': 'Sir Robin', 'greeting': 'Well met'}

>>> hello_3(**params)

Well met, Sir Robin!

如果在定义和调用函数时都使用*或**,将只传递元组或字典。因此还不如不使用它们,还可省却些麻烦。

>>> def with_stars(**kwds):

... print(kwds['name'], 'is', kwds['age'], 'years old')

...

>>> def without_stars(kwds):

... print(kwds['name'], 'is', kwds['age'], 'years old')

...

>>> args = {'name': 'Mr. Gumby', 'age': 42}

>>> with_stars(**args)

Mr. Gumby is 42 years old

>>> without_stars(args)

Mr. Gumby is 42 years old

如你所见,对于函数with_stars,我在定义和调用它时都使用了星号,而对于函数without_stars,我在定义和调用它时都没有使用,但这两种做法的效果相同。因此,只有在定义函数(允许可变数量的参数) 或调用函数时(拆分字典或序列)使用,星号才能发挥作用

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181005G0D3G000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券