有的時(shí)候在循環(huán)中需要?jiǎng)?chuàng)建形式類似的變量名,這樣可以縮短代碼長(zhǎng)度,看網(wǎng)上大部分方法是通過(guò)字典或列表實(shí)現(xiàn),復(fù)雜情況下不太好用。最后的解決辦法是通過(guò) exec() 函數(shù)實(shí)現(xiàn)。
創(chuàng)建變量
參考鏈接 關(guān)于python:如何在循環(huán)中創(chuàng)建不同的變量名?
for k in range(5):
exec(f'cat_{k} = k*2') # 在Jupyter中不寫exec也可以正常運(yùn)行,但在腳本中必須寫
打印 cat_2 =》 4
exec() 函數(shù)可以理解為執(zhí)行一段寫在字符串中的代碼語(yǔ)句。
進(jìn)一步了解其用法可以參考
Python exec 內(nèi)置語(yǔ)句
Python的exec
Python之淺談exec()函數(shù)
與之有密切聯(lián)系的是 eval() 函數(shù),可以理解為執(zhí)行一段寫在字符串中的表達(dá)式。
二者具體區(qū)別可以參考下面文章或者其他網(wǎng)上材料:
python中的exec()函數(shù)和eval()函數(shù)
深度辨析Python的eval()與exec()的方法
但一般使用 exec() 和 eval() 函數(shù)可能會(huì)有風(fēng)險(xiǎn),且代碼較抽象,很多時(shí)候用列表已經(jīng)可以滿足需求了。
lst = []
for i in range(0, 9):
lst.append(i**2)
lst[2] # 4
調(diào)用變量
調(diào)用變量的原理是一樣的,把代碼寫進(jìn)字符串里即可。
這里需要注意的是,如果代碼中也有因號(hào),那需要和最外層的字符串引號(hào)區(qū)分開(kāi)。例如下面代碼中,要調(diào)用的變量是字典,如果最外層也是單引號(hào),則會(huì)與字典的引號(hào)沖突,從而報(bào)錯(cuò)。
for tag_i in tag:
exec(f"t = np.hstack((MT_{tag_i}['t'] , ME_{tag_i}['t']))")
exec(f"V = np.hstack((MT_{tag_i}['V'] , ME_{tag_i}['Vm']))")
ax1.plot(t,V,label=tag_i)
————————————————
版權(quán)聲明:本文為CSDN博主「gsgbgxp」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/gsgbgxp/article/details/117769685