如何在Python中解包参数?

3
在Python中是否可以像JavaScript一样解开参数?
def foo([ arg ]):
    pass

foo([ 42 ])

你尝试运行代码看看是否产生了预期的结果了吗?你可能想使用 def foo(arg, *arg2): 这个函数,它会将 arg2 解包成一个列表。 - chickity china chinese chicken
1个回答

3

参数解包在Python 3中已被移除,因为它容易引起混淆。在Python 2中,您可以这样做:

def foo(arg, (arg2, arg3)):
    pass

foo( 32, [ 44, 55 ] )

Python 3中等效的代码可以是以下任意一种

def foo(arg, arg2, arg3):
    pass

foo( 32, *[ 44, 55 ] )

或者

def foo(arg, args):
    arg2, arg3 = args

foo( 32, [ 44, 55 ] )

为什么他们要移除语言中如此好的一部分呢?“因为它很令人困惑”?真的吗?如果它让某些人感到困惑,为什么他们不只是不使用这个功能呢? - Monsieur Pierre Doune
原因在PEP中已经阐述。总的来说,这是因为它使得内省工具更难编写,错误消息难以调试,并且实际上没有人在使用它。 - Patrick Haugh
这真是令人难过,尤其是来自 JavaScript。在我看来,这是一个非常糟糕的决定。 - Nano Miratus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接