可能重复:
What does *args and **kwargs mean?
我刚读到《挖掘社交网络》,遇到了一个我无法理解的python语法:

transforms = [(', Inc.', ''), (', Inc', ''), (', LLC', ''), (', LLP', '')]

"google, Inc.".replace(*transforms[0])

但如果我打字
*transforms[0]

在解释器中,它说这是无效的语法。我在谷歌上搜索了一下,但python docu真的不适合这份工作。
那么星号在这里是什么意思?谢谢大家。

最佳答案

python中的*argument格式意味着:使用序列argument中的所有元素并将它们作为参数传递给函数。
在这种情况下,这意味着:

"google, Inc.".replace(', Inc.', '')

这是最简单的演示:
>>> def foo(arg1, arg2):
...     print arg1, arg2
...
>>> arguments = ('spam', 'eggs')
>>> foo(*arguments)
spam, eggs

您还可以使用**kw双星格式传入关键字参数:
>>> def foo(arg1='ham', arg2='spam'):
...     print arg1, arg2
...
>>> arguments = dict(arg2='foo', arg1='bar')
>>> foo(**arguments)
bar, foo

并且可以在函数定义中使用相同的拼写来捕获任意位置参数和关键字参数:
>>> def foo(*args, **kw):
...     print args, kw
...
>>> foo('arg1', 'arg2', foo='bar', spam='eggs')
('arg1', 'arg2'), {'foo': 'bar', 'spam': 'eggs'}

关于python - “replace(* something)”中的星号是什么? (python),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12236023/

10-14 18:24
查看更多