我将用一个例子来解释:

list_1 = [1, 2, 3]

list_2 = list_3 = list_1 # reference copy

print(magic_method(list_1))

# Should print ['list_1', 'list_2', 'list_3']

set_1 = {'a', 'b'}

print(magic_method(set_1))

# Should print ['set_1']

要求:返回指向同一引用的所有变量的名称.用python完全可以吗?

我正在思考迭代于globals()和locals()以及等同id的行.有更好的吗?

最佳答案 对于全局变量,您可以:

def magic_method(obj):

return [name for name, val in globals().items() if val is obj]

如果您也想要本地名称,可以使用inspect模块:

def magic_method(obj):

import inspect

frame = inspect.currentframe()

try:

names = [name for name, val in frame.f_back.f_locals.items() if val is obj]

names += [name for name, val in frame.f_back.f_globals.items()

if val is obj and name not in names]

return names

finally:

del frame

然后:

list_1 = [1, 2, 3]

list_2 = list_1

def my_fun():

list_3 = list_1

list_2 = list_1

print(magic_method(list_1))

my_fun()

>>> ['list_3', 'list_1', 'list_2']

python变量名包括_Python – 获取全局范围内对象的所有变量名相关推荐

  1. 获取/设置IFRAME内对象元素的几种JS方法

    获取/设置IFRAME内对象元素的几种JS方法 iframe浏览器ie文档微软 1.IE专用(通过frames索引形象定位): document.frames[i].document.getEleme ...

  2. python 打卡程序_python获取微信企业号打卡数据并生成windows计划任务

    由于公司的系统用的是Java版本,开通了企业号打卡之后又没有预算让供应商做数据对接,所以只能自己捣鼓这个,以下是个人设置的一些内容,仅供大家参考 安装python python的安装,这里就不详细写了 ...

  3. python提取矩阵元素_python获取array中指定元素的示例

    python获取array中指定元素的示例 对于array,如2-D的array,如何取指定元素 设array为3*10的shape s = array([[ 0, 1, 2, 3, 4, 5, 6, ...

  4. python读取数据库导出文件_Python 获取 datax 执行结果保存到数据库的方法

    执行 datax 作业,创建执行文件,在 crontab 中每天1点(下面有关系)执行: 其中 job_start 及 job_finish 这两行记录是自己添加的,为了方便识别出哪张表. #!/bi ...

  5. python处理行情数据_Python获取股票历史、实时数据与更新到数据库

    要做量化投资,数据是基础,正所谓"巧妇难为无米之炊" 在免费数据方面,各大网站的财经板块其实已提供相应的api,如新浪.雅虎.搜狐...可以通过urlopen相应格式的网址获取数据 ...

  6. python判断性别程序设计_python基础15 ---面像对象的程序设计

    面向对象的程序设计 一.面向对象的程序设计简介 1.面向对象程序设计的由来. 我们之前虽然学习过了面向过程的程序,它的核心是面向过程,一步一步的设计好了的流程,虽然极大的降低了程序的复杂度,但是一个设 ...

  7. python变量名包括_python变量命名规则

    python变量命名规则如下: 1.变量名称由数字.字母(包括大写字母和小写字母).下划线组成. 2.变量名不能以数字开头 3.变量名不能用python关键字 4.变量名不能用python函数,否则函 ...

  8. python 结构体嵌套_Python 3不更新嵌套包中的变量(使用“递归”相对导入)

    我正在重构一个大型程序程序(在一个文件夹中实现了许多文件),并使用包将文件分组为面向对象的结构.该应用程序使用tKinter(可能是红色鲱鱼),并且正在Eclipse Kepler上(在Win7上)使 ...

  9. python qq群文件_python 获取qq群成员列表数据

    #!/usr/bin/python # -*- coding: utf-8 -*- import re import time import xlsxwriter from selenium impo ...

最新文章

  1. valgrind 使用 kcachegrind 查看函数运行时间
  2. DataSet导出CSV格式(ASP.NET,C#)
  3. php将配置信息写入文件,Php写入配置文件的经典漏洞
  4. 《研磨设计模式》chap6 工厂模式factory(2)案例实现
  5. C语言哆啦a梦用printf输出,【2013.1.20】故事的最后,哆啦A梦终于又回到了大雄身边。从此两个人过上了…——ProtoType...
  6. echart 地图 某个地区_中国饮食地图来袭!你爱的口味暗藏健康隐患吗?
  7. NLP界新SOTA!吸纳5000万级知识图谱,一举刷爆54个中文任务!
  8. JDBC初学者的basedao工具类
  9. 分布式列数据库--理解hbase列存储机制、架构、表结构设计、命令操作
  10. Mysql学习总结(81)——为什么MySQL不推荐使用uuid或者雪花id作为主键?
  11. Android反编译apktool,dex2jar和jd-gui的使用和一键反编译查看apk
  12. MSB3644 找不到 .NETFramework,Version=v4.7 的引用程序集。要解决此问题,请为此框架版本安装......
  13. 简单一招就能进行不同平台的推文转移,复制粘贴。
  14. 用一根网线连接树莓派跟pc
  15. javaweb学生竞赛管理系统
  16. android硬解码
  17. chrome无痕模式可访问但正常模式访问不了
  18. 如何有效训练你的研究能力
  19. Kubadem方式安装Kubernetes(1.10.0)集群
  20. 大数据应用分析解决方案----图书出版

热门文章

  1. 数据可视化的利器-Seaborn简易入门
  2. Transformer Family
  3. 2020年推荐系统工程师炼丹手册RecSys-Long Paper版
  4. 发布丨网易云信智慧云课堂解决方案,让教育不再难
  5. 阅读应用的社交还能做什么?
  6. 前端project师养成记:开发环境搭建(Sublime Text必备插件推荐)
  7. [LeetCode]题解(python):025-Reverse Nodes in k-Group
  8. 使用python向Redis批量导入数据
  9. .net 默认时间格式不正确
  10. gflags调试访问越界