Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在早期Python中重现Python 3.3的效果_Python_Python 2.7_Python 3.x_Cpython - Fatal编程技术网

在早期Python中重现Python 3.3的效果

在早期Python中重现Python 3.3的效果,python,python-2.7,python-3.x,cpython,Python,Python 2.7,Python 3.x,Cpython,它允许人们获取函数的限定名称(想想module.submodule.class.function)或类似名称 有没有办法在Python2.6和2.7中重现此属性?根据PEP中提出的参数判断,这似乎是不可能的。还有im_class,它为您提供了模块的定义类,但仅此而已 当然,你可以从globals()浏览所有内容,直到找到与你的\uuuuu name\uuuuuuu匹配的内容,但这可能会变得任意复杂,而且非常可怕。如果您确实决定这样做,请同时检查两者是否具有相同的标识(a是b),因为任何两个东西都

它允许人们获取函数的限定名称(想想module.submodule.class.function)或类似名称


有没有办法在Python2.6和2.7中重现此属性?

根据PEP中提出的参数判断,这似乎是不可能的。还有
im_class
,它为您提供了模块的定义类,但仅此而已


当然,你可以从
globals()
浏览所有内容,直到找到与你的
\uuuuu name\uuuuuuu
匹配的内容,但这可能会变得任意复杂,而且非常可怕。如果您确实决定这样做,请同时检查两者是否具有相同的标识(
a是b
),因为任何两个东西都可以具有相同的
\uuuu名称

我编写了一个黑客程序,通过使用inspect(用于类)和AST(用于源文件)模块来获取(嵌套)类的限定名称,并根据行号组合结果。你可以在这里找到它:


我编写了一个库,它为较旧的Python版本提供了一个等价的
\uuuuqalname\uqlname

通过彻底搜索属性树,从全局名称空间中的对象开始,可以为嵌套在类中的对象获得它。我不相信有任何方法可以复制其他函数中定义的函数的
指示符。我不太清楚您的建议是什么,在找到局部变量()和您自己的标识符之前爬虫全局变量()?如果不实际调用函数,您就无法获得
locals()
。但是你可以在
globals()
中的每个对象的
\uuuu dict\uuuuu
中爬行,然后是所有这些对象的
\uu dict\uuuuu
等等。恭喜你挠了我一段时间的痒<代码>pip安装质量名称