亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python中變量前的單星號和雙星號有什么區別?

python中變量前的單星號和雙星號有什么區別?

慕桂英546537 2022-11-01 15:06:25
data = pd.read_csv("customers.csv")print("Wholesale customers dataset has {} samples with {} features each."      .format(*data.shape))在此之后,我得到了數據的維數。但我想知道 Python 中變量之前的星號有什么用處。
查看完整描述

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"


查看完整回答
反對 回復 2022-11-01
?
月關寶盒

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

* 將列表解包為參數, ** 將字典解包為關鍵字參數

*,如果您也想引用它,則**相當于其他一些語言。...


查看完整回答
反對 回復 2022-11-01
?
慕絲7291255

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


查看完整回答
反對 回復 2022-11-01
?
叮當貓咪

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#


查看完整回答
反對 回復 2022-11-01
  • 4 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號