python 動(dòng)態(tài)生成變量名以及動(dòng)態(tài)獲取變量的變量名方法
前言
需求:
必須現(xiàn)在需要?jiǎng)討B(tài)創(chuàng)建16個(gè)list,每個(gè)list的名字不一樣,但是是有規(guī)律可循,比如第一個(gè)list的名字叫:
arriage_list_0=[],第二個(gè)叫arriage_list_1=[]……..依次類推,但是我又不想手動(dòng)的去寫16個(gè)這樣的名字,太累了,而且增加了代碼的冗余性,靈活性也不強(qiáng),所以有沒有一種方法是能動(dòng)態(tài)創(chuàng)建list名稱的呢?答案是有的!而與之對(duì)應(yīng),既然要對(duì)上面的列表動(dòng)態(tài)操作,肯定是少不了動(dòng)態(tài)去解析list名稱。所以下面開始介紹方法。
python 動(dòng)態(tài)生成變量名
locals函數(shù)
代碼之前,先介紹一個(gè)函數(shù):
locals() 函數(shù)會(huì)以字典類型返回當(dāng)前位置的全部局部變量。
菜鳥上的例子:
>>>def runoob(arg): # 兩個(gè)局部變量:arg、z
... z = 1
... print (locals())
...
>>> runoob(4)
{'z': 1, 'arg': 4} # 返回一個(gè)名字/值對(duì)的字典
下面用自己的例子來實(shí)現(xiàn)下,目標(biāo):動(dòng)態(tài)創(chuàng)建名字為list_0到list_15的16個(gè)list列表:
關(guān)鍵代碼:
# 第一步 準(zhǔn)備locals函數(shù) prepare_list = locals() """ 第二步 循環(huán)16次,從0-15賦值給locals函數(shù)對(duì)應(yīng)的變量prepare_list prepare_list是一個(gè)字典,所以將我們需要的列表名稱作為key值傳入 """ for i in range(16): arriage_list['list_' + str(i)] = []
測(cè)試代碼:
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)) + '個(gè)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()
實(shí)驗(yàn)截圖:

實(shí)際證明,已經(jīng)動(dòng)態(tài)的每次往list插入了值。
python 動(dòng)態(tài)獲取變量的變量名
需求目標(biāo):如果有了上面的動(dòng)態(tài)命名list,那么當(dāng)動(dòng)態(tài)獲取變量的變量名,就需要如下的操作:
利用python原生的inspect庫來實(shí)現(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]
測(cè)試代碼:
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)) + '個(gè)list')
a = get_variable_name(prepare_list['list_0']).pop()
b = get_variable_name(prepare_list['list_1']).pop()
print(a)
print(b)
實(shí)驗(yàn)截圖:

以上這篇python 動(dòng)態(tài)生成變量名以及動(dòng)態(tài)獲取變量的變量名方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python中最快的循環(huán)姿勢(shì)實(shí)例詳解
python給我們提供了多個(gè)循環(huán)方法,比如while循環(huán)、for循環(huán)等,下面這篇文章主要給大家介紹了關(guān)于Python中最快的循環(huán)姿勢(shì),需要的朋友可以參考下2021-11-11
python實(shí)現(xiàn)的希爾排序算法實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)的希爾排序算法,實(shí)例分析了基于Python實(shí)現(xiàn)希爾排序的相關(guān)技巧,需要的朋友可以參考下2015-07-07
使用Python實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備配置備份與恢復(fù)
網(wǎng)絡(luò)設(shè)備配置備份與恢復(fù)在網(wǎng)絡(luò)安全管理中起著至關(guān)重要的作用,本文為大家介紹了如何通過Python實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備配置備份與恢復(fù),需要的可以參考下2025-03-03
詳解如何在PyQt5中實(shí)現(xiàn)平滑滾動(dòng)的QScrollArea
Qt 自帶的 QScrollArea 滾動(dòng)時(shí)只能在兩個(gè)像素節(jié)點(diǎn)之間跳變,看起來很突兀。所以本文將通過定時(shí)器,重寫 wheelEvent() 來實(shí)現(xiàn)平滑滾動(dòng),需要的可以參考一下2023-01-01
Python使用切片移動(dòng)元素位置的代碼實(shí)踐
在 Python 中,切片是指從序列類型(如列表、字符串、元組等)中提取子序列的過程,切片可以用來快速獲取列表的一部分也可以用于反轉(zhuǎn)列表,本文小編給大家介紹了Python使用切片移動(dòng)元素位置的代碼實(shí)踐,需要的朋友可以參考下2024-09-09

