Python如何通过变量ID得到变量的值
目录
- 通过变量ID得到变量的值
- 如何查看一个变量的id
- 用id()函数
通过变量ID得到变量的值
已知获得变量的id用函数id(),那么它的反函数是什么?
答案是:PyObj_FromPtr,据此,写了一个函数di(),可以根据 id()的结果获得变量的值
from _ctypes import PyObj_FromPtr
def di(obj_id):
""" 通过变量ID 得到变量的值"""
return PyObj_FromPtr(obj_id)
if __name__ == "__main__":
i = {"j":99,"name":"jack"}
var_id = id(i)
print(var_id)
print (di(var_id))
这么做的意义何在?
答案是Python 脚本解释里有用, 如果要写一个Python脚本解释器, 得到一行字符串 : "i = j" , 正常情况下你分割字符串得到 i = "j" , 可如果 已知 j=10, 如何让 i = 10 呢 ? 经过一系列id() di() 大法, 可以实现这个小目标.
第二种实现的方法代码类似,参考 https://www.jb51.net/article/248147.htm
import ctypes value='hello world' #定义一个字符串变量 address=id(value) #获取value的地址,赋给address get_value=ctypes.cast(address, ctypes.py_object).value #读取地址中的变量 print(get_value)
如何查看一个变量的id
如有错误欢迎指正
用id()函数

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
什么是python的id函数
python官方给出的id解释为 id(object) Return the "identity" of an object. This is an integer (or long integer) which is guaranteed to be unique and constant for this object during its lifetime. Two objects with non-overlapping lifetimes may have the same?
-
python中id函数运行方式
id(object) 功能:返回的是对象的"身份证号",唯一且不变,但在不重合的生命周期里,可能会出现相同的id值.此处所说的对象应该特指复合类型的对象(如类.list等),对于字符串.整数等类型,变量的id是随值的改变而改变的. Python版本: Python2.x Python3.x Python英文官方文档解释: Return the "identity" of an object. This is an integer (or long integer)
-
Python基础之变量基本用法与进阶详解
本文实例讲述了Python基础之变量基本用法与进阶.分享给大家供大家参考,具体如下: 目标 变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的 1.1 引用的概念 在 Python 中 变量 和 数据 是分开存储的 数据 保存在内存中的一个位置 变量 中保存着数据在内存中的地址 变量 中 记录数据的地址,就叫做 引用 使用 id() 函数可以查看变量中保存数据所
-
python 实现两个变量值进行交换的n种操作
python 两个变量值交换 方法一: c = 0 c= a a= b b= c 方法二: a,b = b,a 这是python的基本方法 方法三:(只用两个变量实现) a = a+b b = a-b a = a-b python两个数值互换(浅析a,b=b,a原理) python交换两个值得方法非常简单,即a,b=b,a,一步操作就交换了两个值,那么这是为什么呢? 真相: Python的变量并不直接存储值,而只是引用一个内存地址,交换变量时,只是交换了引用的地址. 先看下面这段程序: impo
-
Python如何通过变量ID得到变量的值
目录 通过变量ID得到变量的值 如何查看一个变量的id 用id()函数 通过变量ID得到变量的值 已知获得变量的id用函数id(),那么它的反函数是什么? 答案是:PyObj_FromPtr,据此,写了一个函数di(),可以根据 id()的结果获得变量的值 from _ctypes import PyObj_FromPtr def di(obj_id): """ 通过变量ID 得到变量的值""" return PyObj_Fr
-
Python利用contextvars实现管理上下文变量
目录 web 框架中的 request ThreadLocal contextvars c.Token contextvars.Context 小结 Python 在 3.7 的时候引入了一个模块:contextvars,从名字上很容易看出它指的是上下文变量(Context Variables),所以在介绍 contextvars 之前我们需要先了解一下什么是上下文(Context). Context 是一个包含了相关信息内容的对象,举个例子:"比如一部 13 集的动漫,你直接点进第八集,看到女
-
python实现同时给多个变量赋值的方法
本文实例讲述了python实现同时给多个变量赋值的方法.分享给大家供大家参考.具体分析如下: python中可以同时给多个变量赋值,下面列举了三种方法 # Assign values directly a, b = 0, 1 assert a == 0 assert b == 1 # Assign values from a list (r,g,b) = ["Red","Green","Blue"] assert r == "Red&q
-
python嵌套函数使用外部函数变量的方法(Python2和Python3)
python嵌套函数使用外部函数变量的方法,Python2和Python3均可使用 python3 def b(): b = 1 def bchange(): nonlocal b b += 1 bchange() print(b) Python 2 只能这样(利用 mutable 对象): def b(): b = [1] def bchange(): b[0] += 1 bchange() print b[0]
-
jquery操作ID带有变量的节点实例
如下所示: var indexNode='content'+index; $("#"+indexNode).show( 'puff', { }, 500, callback ); 以上这篇jquery操作ID带有变量的节点实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
对Python 获取类的成员变量及临时变量的方法详解
利用Python反射机制,从代码块中静态获取参数: co_argcount: 普通参数的总数,不包括参数和*参数. co_names: 所有的参数名(包括参数和*参数)和局部变量名的元组. co_varnames: 所有的局部变量名的元组. co_filename: 源代码所在的文件名. co_flags: 这是一个数值,每一个二进制位都包含了特定信息.较关注的是0b100(0x4)和0b1000(0x8),如果co_flags & 0b100 != 0,说明使用了*args参数:如果co_fl
-
Python 中的 global 标识对变量作用域的影响
global 标识用于在函数内部,修改全局变量的值. 我们可以通过以下规则,来判定一个变量到底是在全局作用域还是局部作用域: 变量定义在全局作用域,那就是全局变量. 变量在函数中定义,并且加了 global 标识,就是全局变量. 如果变量在函数中仅做了定义,那么就是局部变量. 如果变量在函数中仅仅是使用,那么就是全局变量. 下面的示例,有助于理解上述规则: def cook(): global dumplings dumplings = '10' # 全局变量 print('cook():' +
-
pycharm下查看python的变量类型和变量内容的方法
用过Matlab的同学基本都知道,程序里面的变量内容可以很方便的查看到,但python确没这么方便,对于做数据处理的很不方便,其实不是没有这个功能,只是没有发现而已,今天整理一下供大家相互学习. 首先,在程序的某一处添加断点,点击行号右边部分红处,如下图所示: 添加断点后,选择debug程序,快捷键在pycharm的右上角. debug过程中,pycharm的下方工作区域内会相应显示: Variables窗口中的变量可以右击,Add to Watches,然后在Watches窗口中可以看到所选数
-
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
本文实例讲述了Python面向对象程序设计类变量与成员变量.类方法与成员方法用法.分享给大家供大家参考,具体如下: 类变量与成员变量 在类中声明的变量我们称之为类变量[静态成员变量], 在init()函数中声明的变量并且绑定在实例上的变量我们称之为成员变量. 类变量直接可以通过类名来调用. 1.若类变量与成员同时存在并且同名 使用对象来调用的时候,获取的结果是成员变量的值, 使用类名来调用,获取的是类变量的值. 2.若类变量存在,成员变量不存在, 使用对象来调用的时候,它首先寻找成员变量, 如果
-
python关于调用函数外的变量实例
实例如下所示: class Solution(object): def foo(self, s): def bar(a): s += a print s bar("aa") Solution().foo("ss") 运行结果 UnboundLocalError: local variable 's' referenced before assignment class Solution(object): def foo(self, s): def bar(a): p
随机推荐
- js微信分享实现代码
- Laravel框架学习笔记(二)项目实战之模型(Models)
- C语言菜鸟基础教程之条件判断
- iOS开发使用XML解析网络数据
- jsMind通过鼠标拖拽的方式调整节点位置
- phpmyadmin中禁止外网使用的方法
- ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
- WinForm实现状态栏跑马灯效果的方法示例
- Linux中samba服务器的搭建教程
- mysql数据库查询优化 mysql效率第1/3页
- greenbrower用到的function.js代码集合第1/2页
- Java Web使用简单的批处理操作(记事本+Tomcat)
- NopCommerce架构分析之(七)主题Theme皮肤管理器
- thinkphp学习笔记之多表查询
- 一道超经典的C++结构体的题目
- iOS开发教程之UIView和UIViewController的生命周期详解
- Spring Cloud Alibaba Nacos 入门详解
- c#中的扩展方法学习笔记
- C语言实现小猫钓鱼游戏
- iview tabs 顶部导航栏和模块切换栏的示例代码
