Python获取变量名本身——varname库
文章目录
- 问题描述
- 方法1:inspect
- 方法2:varname
- 参考文献
问题描述
Python 获取变量名本身
方法1:inspect
import inspectdef get_var_name(var):"""获取变量名"""frame = inspect.currentframe().f_backfor name, value in frame.f_locals.items():if value is var:return namefor name, value in frame.f_globals.items():if value is var:return namereturn Nonea = 1
b = 2
c = 3print(get_var_name(a)) # afor i in [a, b, c]:print(get_var_name(i))# a# b# c
方法2:varname
from varname import nameofa = 1
print(nameof(a)) # a
循环
from varname.helpers import Wrappera = 1
b = 2
c = 3
a = Wrapper(a)
b = Wrapper(b)
c = Wrapper(c)for i in [a, b, c]:print(i.name, i.value)# a 1# b 2# c 3
缺点:需要单独写一行,不能写进循环里,也不能写成一行
from varname.helpers import Wrappera, b, c = 1, 2, 3
a, b, c = Wrapper(a), Wrapper(b), Wrapper(c)
# varname.utils.ImproperUseError: Caller doesn't assign the result directly to variable(s).
from varname.helpers import Wrappera, b, c = 1, 2, 3
for i in [Wrapper(a), Wrapper(b), Wrapper(c)]:print(i.name, i.value)
# varname.utils.ImproperUseError: Caller doesn't assign the result directly to variable(s).
参考文献
- python-varname GitHub