4 回答

TA貢獻1827條經驗 獲得超9個贊
單個星號將采用元組(或通常任何迭代器,如列表)并將其擴展為一系列參數,如下所示:
def multiply_two_numbers(x, y):
return x * y
my_tuple = (3, 4)
multiply_two_numbers(my_tuple) # gives an error
multiply_two_numbers(*my_tuple) # gives 3 * 4 = 12
雙星號做了類似的事情,但用字典代替,用關鍵字參數代替位置參數:
def say_my_name(first_name="", last_name=""):
print(first_name + " " + last_name)
some_guy = {"first_name": "Homer", "last_name": "Simpson"}
say_my_name(**some_guy) # will print "Homer Simpson"

TA貢獻1772條經驗 獲得超5個贊
Python 有一種非常有趣的處理函數參數的方式(我個人非常喜歡)。
如果我們定義一個新函數
def myFunc(*args, **kwargs):
print(args, kwargs)
我可以用
myFunc(1, 2, 3, 4, a = 'a', b = 'b')
并獲得輸出
([1, 2, 3, 4], {'a': 'a', 'b': 'b'})
為了具體回答你的問題,我也可以這樣調用函數
myFunc(*[1, 2, 3, 4], **{'a': 'a', 'b': 'b'})
并獲得完全相同的輸出
我還可以使用星號傳遞位置參數
def add(x, y):
return x + y
并調用它
nums = [1, 2]
print(add(*nums))
標準輸出:3
如您所見,1 和 2 分布在函數參數中。
TDLR
* 將列表解包為參數, ** 將字典解包為關鍵字參數
*,如果您也想引用它,則**相當于其他一些語言。...

TA貢獻1859條經驗 獲得超6個贊
人們已經為你在爭論中提供了保障,而星號通常在其他情況下不起作用(見本文末尾)。
但是還有另一種使用星星的方法,那就是變量解包。
>>> a, b, c = [1,2,3]
>>> print(a,b,c)
1 2 3
到目前為止,一切都很好。但是如果你現在只想分配a呢?您可以捕獲帶星號的變量中剩余的內容。
a, *rest = [1,2,3]
>>> print (a, "and the rest", rest)
1 and the rest [2, 3]
一個不起作用的例子:
>>> li = [1,2,3]
>>> var = *li
File "<stdin>", line 1
SyntaxError: can't use starred expression here

TA貢獻1776條經驗 獲得超12個贊
the_list = [1, 3, 4]
相比
print(the_list) # prints the list as is; 1 parameter
[1, 3, 4]
隨著使用*
print(*the_list) # performs print(1, 3, 4); 3 parameters
1 3 4
the_dict = {"sep": "---", "end": " #END#"}
相比
print(5, 6, the_dict) # after 5 and 6 prints the_dict as is
5 6 {'sep': '---', 'end': ' #END#'}
隨著使用*
print(5, 6, *the_dict) # after 5 and 6 prints individual keys of the_dict
5 6 sep end
并使用**
print(5, 6, **the_dict) # performs print(5, 6, sep="---", end=" #END#")
5---6 #END#
*
最后,和的組合使用**
:
print(77, *the_list, **the_dict) # performs print(77, 1, 3, 4, sep="---", end=" #END#")
77---1---3---4 #END#
添加回答
舉報