【趣】Python获取变量的变量名
两种不完美的方式:
用locals,globals
用locals获取变量列表,再遍历比较对象。
def namestr(obj):
ns = globals()
return [name for name in namespace if ns[name] is obj]
其中is比较的是id,但如果a=b,则两者id相同。
缺点:如果两个变量a = b,则会返回locals列表中前者。
用inspect模块
import inspect
import re
def varname(p):
for line in inspect.getframeinfo(inspect.currentframe().f_back)[3]:
m = re.search(r'\bvarname\s*\(\s*([A-Za-z_][A-Za-z0-9_]*)\s*\)', line)
if m:
return m.group(1)
缺点: 
1. 实际是取源代码,如果是:map(lambda i:varname(i), li),最后取出的总是i。 
2. 由于取上层frame,如果是C代码调的,未知;且作为一个模块,最好不要和上层有关系。
备注
这两种方式都有作用上的缺陷,在设计上也不工程ful。实际中少用。
【趣】Python获取变量的变量名的更多相关文章
- python  获取代码宿主机名  ip
		
1.获取hostname 相同代码 不同宿主机 日志名 互异 且 可识别宿主机 分布式爬虫 https://docs.python.org/3.6/library/socket.html#socket ...
 - python获取主机IP,主机名
		
获取主机内网,外网IP,主机名 代码如下: #!/usr/bin/env python #-*- coding:utf-8 -*- # author:Zeng Xianhe import socket ...
 - python 获取当前调用函数名等log信息
		
import sys funcName = sys._getframe().f_back.f_code.co_name #获取调用函数名 lineNumber = sys._getframe().f_ ...
 - python如何获取变量的变量名
		
假设现在存在一个值为1变量名为a的变量,如何通过一个函数获取该变量的变量名a? 上面这个需求来源于某群友的一个要求,希望能有一个这样的函数来方便打印. 这个需求很扯淡啊,为什么不用格式化输出?它回复到 ...
 - python 动态生成变量名以及动态获取变量的变量名
		
前言需求: 必须现在需要动态创建16个list,每个list的名字不一样,但是是有规律可循,比如第一个list的名字叫: arriage_list_0=[],第二个叫arriage_list_1=[] ...
 - JavaScript使用构造函数获取变量的类型名
		
在JavaScript中,如何准确获取变量的类型名是一个经常使用的问题. 但是常常不能获取到变量的精确名称,或者必须使用jQuery 中的方法,这里 我通过 typeof ,jQuery.type 和 ...
 - python 获取环境变量
		
python 获取环境变量 参考 https://docs.python.org/2/library/os.html 使用os.environ获取环境变量字典 import os env_dist = ...
 - 醒醒!Python已经支持中文变量名啦!
		
最近,我在翻阅两本比较新的 Python 书籍时,发现它们都犯了一个严重的低级错误! 这两本书分别是<Python编程:从入门到实践>和<父与子的编程之旅>,它们都是畅销书,都 ...
 - python笔记:#007#变量
		
变量的基本使用 程序就是用来处理数据的,而变量就是用来存储数据的 目标 变量定义 变量的类型 变量的命名 01. 变量定义 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 ...
 - python 类的私有变量和私有方法
		
#!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/08 8:46 # @Author : lijunjiang # @Fil ...
 
随机推荐
- linux查看各服务状态以及开启和关闭
			
1.......................................... 友好的显示所有服务的运行状态: service --status-all chkconfig --list 2. ...
 - 6-3-3ios自动化-数据驱动
			
https://testerhome.com/topics/14247 #!/usr/bin/env python3 # coding:utf-8 from appium import webdriv ...
 - [UE4]C++的const类成员函数
			
我们知道,在C++中,若一个变量声明为const类型,则试图修改该变量的值的操作都被视编译错误.例如: const char blank = ‘’; blank = ‘\n’; // 错误 要声明一个 ...
 - php multicast多播实现详解
			
什么是多播? 网络中存在3中传播形式,单播,广播,多播. 1. 单播 : 就是1->1 2. 广播 : 1->多(广播域内) 3. 多播 : 1->组(一组ip) 1 2 3 4 5 ...
 - Hive基础之Hive的复杂类型
			
ARRAY 一组有序字段,字段的类型必须相同.Array(1,2) create table hive_array(ip string, uid array<string>) row fo ...
 - ECCV 2018 | Bi-Real net:超XNOR-net 10%的ImageNet分类精度
			
这项工作由香港科技大学,腾讯 AI lab,以及华中科技大学合作完成,目的是提升二值化卷积神经网络(1-bit CNN)的精度.虽然 1-bit CNN 压缩程度高,但是其当前在大数据集上的分类精度与 ...
 - uva216-枚举-简单题
			
题意:n个计算机通过电缆连接,怎么连接使用的电缆最少 mmp,死wa不过,memset(vis,0,sizeof(per)),太不小心了 #include <iostream> #incl ...
 - python入门-测试代码
			
断言 测试函数 def get_formatted_name(first,last): """generate a neatly formattef full name& ...
 - CUDA C Programming Guide 在线教程学习笔记 Part 4
			
▶ 图形互操作性,OpenGL 与 Direct3D 相关.(没学过,等待填坑) ▶ 版本号与计算能力 ● 计算能力(Compute Capability)表征了硬件规格,CUDA版本号表征了驱动接口 ...
 - leetcode367
			
public class Solution { public bool IsPerfectSquare(int num) { , high = num; while (low <= high) ...