python中变量名存储在哪里_python – 如何在内部存储和映射变量名称?
I think at a high level it can be done with a dict, where the key is the variable name (str?) and the value is the reference that it’s associated with.
這也是它內部工作的方式.在CPython中,變量名和它們指向的對象通常存儲在Python字典中;編寫Python代碼時可以使用的相同數據結構.
當你寫x = 5時,名字x被設置為全局名稱字典中的一個鍵,其中5為相應的值.您可以使用globals()函數返回并檢查此字典,該函數提供當前作用域命名空間的內容.
所以你的名字x占據空間也是正確的.它作為字符串存在于內存中,而Python則為字典的鍵保留對它的引用.
如果你想更深入地了解CPython源代碼以查看x被分配給值5的位置,你可以查看ceval.c.寫入x = 5會觸發LOAD_CONST操作碼(將整數5放入堆棧)以及STORE_GLOBAL操作碼*(將名稱x設置為字典中的鍵,值為5).
Here是STORE_GLOBAL操作碼的代碼:
TARGET(STORE_GLOBAL) {
PyObject *name = GETITEM(names, oparg);
PyObject *v = POP();
int err;
err = PyDict_SetItem(f->f_globals, name, v); /* call to update dict */
Py_DECREF(v);
if (err != 0)
goto error;
DISPATCH();
}
您可以看到對PyDict_SetItem的調用以更新全局字典.
*如果檢查x = 5生成的字節碼(例如使用dis),您可能會看到使用的STORE_NAME操作碼.此操作碼以相同的方式起作用(有關簡要說明,請參閱here).
總結
以上是生活随笔為你收集整理的python中变量名存储在哪里_python – 如何在内部存储和映射变量名称?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何将word文档转换成txt记事本格式
- 下一篇: python函数参数类型及顺序_pyth