首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在函数签名中放置python元组

在函数签名中放置python元组
EN

Stack Overflow用户
提问于 2016-02-25 00:24:18
回答 3查看 2.7K关注 0票数 7

在python中,有一个有趣的、非常有用的工具,您可以通过它在函数签名上匹配元组中的值。

代码语言:javascript
复制
def first((a, b)):
    return a

x = (4, 9)
first(x)
li = [(5, 4), (8, 9)]
map(first, li)

def second(a, b):
    # does not work the same way
    return b

我没有看到任何关于使用这个的文献。python社区为此使用了哪些词汇表?有什么令人信服的理由不使用这个吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-25 00:31:15

它叫元组参数解包,是在Python3.0中删除

就像@zondo说的,出于兼容性的原因,您可能不想使用它。我自己也偶尔在Python 2中使用它。你会在我的第一个链接的PEP中找到反对它的理由,但请记住,这是它被从语言中删除的原因,我认为这至少部分是因为它使Python创建者更容易,这不一定是你或我避免使用它的原因。

票数 9
EN

Stack Overflow用户

发布于 2016-02-25 00:31:52

在Python2,这太棒了。然而,在Python3中它是无效的语法,所以我不推荐它,因为它的前向可压缩的原因。

票数 2
EN

Stack Overflow用户

发布于 2019-11-09 09:42:06

这个公认的答案并没有说明如何解决这个问题,所以让我把它说出来。

Python 2代码

代码语言:javascript
复制
def fun(a, (b, c), d):
    print("a {0} b {1} c {2} d {3}".format(a, b, c, d))

可以重构成

代码语言:javascript
复制
def fun(a, _args, d):
    b, c = _args
    print("a {0} b {1} c {2} d {3}".format(a, b, c, d))

它也是有效的Python 3代码。

就像这样

代码语言:javascript
复制
fun(1, [2, 3], 4)

链接的佩普-3113更详细地解释了这一点,并提供了在Python3.0中删除这种语法的理由。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35615939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档