python中你不知道的*號(hào)用法總結(jié)
Python 中的星號(hào)(*)是一個(gè)功能強(qiáng)大的符號(hào),它遠(yuǎn)不止簡(jiǎn)單的乘法運(yùn)算符。它在多種上下文中扮演著不同的角色,理解其多樣的用法對(duì)于編寫(xiě)高效、優(yōu)雅的 Python 代碼至關(guān)重要。本文將深入探討*符號(hào)在Python中的各種用法,力求覆蓋你可能不知道的細(xì)節(jié)和技巧。 許多 Python 初學(xué)者只了解其在算術(shù)運(yùn)算中的作用,而忽略了它在參數(shù)傳遞、解包、迭代器等方面的強(qiáng)大功能。本文將通過(guò)大量的代碼示例,幫助你全面掌握*符號(hào)的精髓。
常見(jiàn)用法
讓我們從最常見(jiàn)的用法開(kāi)始,逐步深入到一些比較高級(jí)的應(yīng)用場(chǎng)景。
1. 算術(shù)運(yùn)算符
這是*最基本的用法,用于執(zhí)行乘法運(yùn)算。這部分相信大家都很熟悉,這里就不展開(kāi)贅述了。
a = 5 b = 10 result = a * b # result = 50 print(result)
2. 參數(shù)傳遞中的*args
在函數(shù)定義中,*args允許你傳遞任意數(shù)量的位置參數(shù)。這些參數(shù)會(huì)被打包成一個(gè)元組。這在處理參數(shù)數(shù)量不確定或需要靈活處理參數(shù)的場(chǎng)景下非常有用。
def my_sum(*args):
total = 0
for num in args:
total += num
return total
print(my_sum(1, 2, 3)) # Output: 6
print(my_sum(10, 20, 30, 40, 50)) # Output: 150
*args 的名稱(chēng)并非強(qiáng)制規(guī)定,你可以使用其他的名稱(chēng),例如 *numbers, *values 等,關(guān)鍵在于星號(hào) *。
3. 參數(shù)傳遞中的kwargs
與*args類(lèi)似,**kwargs允許你傳遞任意數(shù)量的關(guān)鍵字參數(shù)。這些參數(shù)會(huì)被打包成一個(gè)字典。這在需要處理命名參數(shù)的場(chǎng)景下非常有用。
def print_kwargs(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_kwargs(name="Alice", age=30, city="New York")
# Output:
# name: Alice
# age: 30
# city: New York
同樣,**kwargs 的名稱(chēng)也不是強(qiáng)制的,你可以使用其他名稱(chēng),例如 **params, **options 等,關(guān)鍵在于雙星號(hào) **。
4. 解包序列
* 可以用于解包序列(例如列表、元組)并將元素傳遞給函數(shù)或其他結(jié)構(gòu)。
my_list = [1, 2, 3]
print(*my_list) # Output: 1 2 3
def my_func(a, b, c):
print(a, b, c)
my_func(*my_list) # Output: 1 2 3
這在處理多個(gè)變量時(shí)非常方便,避免了冗長(zhǎng)的代碼。
5. 解包字典
** 可以用于解包字典,并將鍵值對(duì)傳遞給函數(shù)或其他結(jié)構(gòu)。
my_dict = {"a": 1, "b": 2, "c": 3}
print(**my_dict) # This will raise a SyntaxError. You need to use it within a function call or similar.
def my_func2(a, b, c):
print(a, b, c)
my_func2(**my_dict) # Output: 1 2 3
6. 矩陣乘法 (NumPy)
在NumPy中,* 用于進(jìn)行元素級(jí)的矩陣乘法,而不是矩陣乘法。 要進(jìn)行矩陣乘法,需要使用 @ 運(yùn)算符 (Python 3.5+) 或 numpy.dot() 函數(shù)。
import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) print(a * b) # Element-wise multiplication: [[ 5 12], [21 32]] print(a @ b) # Matrix multiplication: [[19 22], [43 50]] print(np.dot(a, b)) # Matrix multiplication: [[19 22], [43 50]]
7. 文件路徑操作
在處理文件路徑時(shí),* 可以用作通配符,匹配任意數(shù)量的字符。
8. 正則表達(dá)式
在正則表達(dá)式中,* 表示匹配零個(gè)或多個(gè)前面的字符。
總結(jié)
本文詳細(xì)介紹了 Python 中*符號(hào)的多種用法,從基本的算術(shù)運(yùn)算到高級(jí)的參數(shù)傳遞和解包操作。 熟練掌握這些用法,能夠顯著提高你的 Python 編程效率,編寫(xiě)出更簡(jiǎn)潔、更易讀的代碼。 記住,* 和 ** 的力量在于它們處理可變數(shù)量參數(shù)和解包序列的能力,這在構(gòu)建靈活且可重用的函數(shù)和代碼結(jié)構(gòu)中至關(guān)重要。
到此這篇關(guān)于python中你不知道的*號(hào)用法總結(jié)的文章就介紹到這了,更多相關(guān)python *號(hào)用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)定時(shí)發(fā)送郵件
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)定時(shí)發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12
Python之tkinter文字區(qū)域Text使用及說(shuō)明
這篇文章主要介紹了Python之tkinter文字區(qū)域Text使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Python實(shí)現(xiàn)屏幕代碼雨效果的示例代碼
這篇文章主要介紹了如何利用Python中的Pygame模塊實(shí)現(xiàn)代碼雨效果,文中通過(guò)示例代碼介紹的非常詳細(xì),感興趣的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03
PyTorch在Windows環(huán)境搭建的方法步驟
這篇文章主要介紹了PyTorch在Windows環(huán)境搭建的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
基于Python實(shí)現(xiàn)的微信好友數(shù)據(jù)分析
這篇文章主要介紹了基于Python實(shí)現(xiàn)的微信好友數(shù)據(jù)分析的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-02-02

