请问python中单星号和双星号有什么区别?


比方说有下面两行代码,

def foo(param1, *param2):
def bar(param1, **param2):

有什么区别呢? 谢谢。

编程 双星号 python 单星号 语法

二小姐的小缝儿 10 years, 11 months ago

使用*和**前缀, 可以让函数获取可变数量的参数

一个星号的形式(args)用来传递一个可变长度的list参数 两个星号的形式(*args) 用来传递一个可变长度的字典参数

>>>def powersum(power, *args):
    #Return the sum of each argument raised to specified power.
    total = 0
    for i in args:
    total += pow(i, power)
    return total
…
>>> powersum(2, 3, 4)
25
>>> powersum(2, 10)
100

由于在args变量前有前缀,所有多余的函数参数都会作为一个元组存储在args中。如果使用的是*前缀,多余的参数则会被认为是一个字典的键/值对。

逆袭D伊藤诚 answered 10 years, 5 months ago

Your Answer