python 動態(tài)生成變量名以及動態(tài)獲取變量的變量名方法
前言
需求:
必須現(xiàn)在需要動態(tài)創(chuàng)建16個list,每個list的名字不一樣,但是是有規(guī)律可循,比如第一個list的名字叫:
arriage_list_0=[],第二個叫arriage_list_1=[]……..依次類推,但是我又不想手動的去寫16個這樣的名字,太累了,而且增加了代碼的冗余性,靈活性也不強,所以有沒有一種方法是能動態(tài)創(chuàng)建list名稱的呢?答案是有的!而與之對應,既然要對上面的列表動態(tài)操作,肯定是少不了動態(tài)去解析list名稱。所以下面開始介紹方法。
python 動態(tài)生成變量名
locals函數(shù)
代碼之前,先介紹一個函數(shù):
locals() 函數(shù)會以字典類型返回當前位置的全部局部變量。
菜鳥上的例子:
>>>def runoob(arg): # 兩個局部變量:arg、z ... z = 1 ... print (locals()) ... >>> runoob(4) {'z': 1, 'arg': 4} # 返回一個名字/值對的字典
下面用自己的例子來實現(xiàn)下,目標:動態(tài)創(chuàng)建名字為list_0到list_15的16個list列表:
關鍵代碼:
# 第一步 準備locals函數(shù) prepare_list = locals() """ 第二步 循環(huán)16次,從0-15賦值給locals函數(shù)對應的變量prepare_list prepare_list是一個字典,所以將我們需要的列表名稱作為key值傳入 """ for i in range(16): arriage_list['list_' + str(i)] = []
測試代碼:
def test_list_pre(): prepare_list = locals() for i in range(16): prepare_list['list_' + str(i)] = [] prepare_list['list_' + str(i)].append(('我是第' + str(i)) + '個list') print(prepare_list['list_0']) print(prepare_list['list_1']) print(prepare_list['list_2']) print(prepare_list['list_3']) if __name__ == '__main__': test_list_pre()
實驗截圖:
實際證明,已經動態(tài)的每次往list插入了值。
python 動態(tài)獲取變量的變量名
需求目標:如果有了上面的動態(tài)命名list,那么當動態(tài)獲取變量的變量名,就需要如下的操作:
利用python原生的inspect庫來實現(xiàn):
核心代碼:
import inspect def get_variable_name(variable): callers_local_vars = inspect.currentframe().f_back.f_locals.items() return [var_name for var_name, var_val in callers_local_vars if var_val is variable]
測試代碼:
def get_variable_name(variable): callers_local_vars = inspect.currentframe().f_back.f_locals.items() return [var_name for var_name, var_val in callers_local_vars if var_val is variable] if __name__ == '__main__': prepare_list = locals() for i in range(16): prepare_list['list_' + str(i)] = [] prepare_list['list_' + str(i)].append(('我是第' + str(i)) + '個list') a = get_variable_name(prepare_list['list_0']).pop() b = get_variable_name(prepare_list['list_1']).pop() print(a) print(b)
實驗截圖:
以上這篇python 動態(tài)生成變量名以及動態(tài)獲取變量的變量名方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Pandas DataFrame replace替換后無效的解決
這篇文章主要介紹了Pandas DataFrame replace替換后無效的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08Python通過字典映射函數(shù)實現(xiàn)switch
這篇文章主要介紹了Python通過字典映射函數(shù)實現(xiàn)switch,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11Python實戰(zhàn)之markdown轉pdf(包含公式轉換)
由于我們markdown編輯器比較特殊,不是很方便瀏覽,如果轉換成pdf的話,就不需要可以的去安裝各種編輯器才可以看了。所以本文將介紹如何通過Python實現(xiàn)md轉pdf或者是docx,需要的朋友可以參考一下2021-12-12解決python測試opencv時imread導致的錯誤問題
今天小編就為大家分享一篇解決python測試opencv時imread導致的錯誤問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01python3中No module named _ssl的問題解決
本文主要介紹了python3中No module named _ssl的問題解決,這個錯誤表示Python導入_ssl模塊時失敗,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-08-08