Python 奇技淫巧 1

九年吃菜粥 38.85m2021-06-211526 次点击1 人感谢
# 通过 ID 拿到变量的值

主要用于跨命名空间的访问

**注意**:一定要保证该变量还存在,不然可能会读到不知道什么东西

## 方法 1

```python
from _ctypes import PyObj_FromPtr

a = 123
a_id = id(a)
print(PyObj_FromPtr(a_id))
```

## 方法 2

```python
import ctypes

a = 123
a_id = id(a)
print(ctypes.cast(a_id, ctypes.py_object).value)
```

# 通过 ID 修改变量的值

相当于 C 中的指针传递,然后通过指针修改原变量的值

**注意**:一定要保证该变量存在,不然可能改到其他内存

```python
import ctypes

a = 123
a_id = id(a)
b = 321
b_id = id(b)

ctypes.memmove(a_id,b_id,object.__sizeof__(b_id))

print(a)
```
收藏 ♥ 感谢
暂无回复

登录注册 后可回复。



GitHub