Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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_Variables - Fatal编程技术网

定义python变量的位置

定义python变量的位置,python,variables,Python,Variables,有没有办法知道python中变量的定义位置(例如文件名) 我遇到了以下问题:在project的一个源文件中,有一个“print variable”语句,该文件中没有定义变量,并且我找不到该变量的定义位置。您可以使用inspect模块获取对象定义位置的信息:否,不适用于变量。变量只是对任意python对象的引用,如果您可以找到变量,那么您已经找到了定义它的函数、类或模块 我猜想您想知道python对象在何处定义;对于许多可以通过对象的\uuuu file\uuuu属性确定的对象。对于类,您必须首先

有没有办法知道python中变量的定义位置(例如文件名)


我遇到了以下问题:在project的一个源文件中,有一个“print variable”语句,该文件中没有定义变量,并且我找不到该变量的定义位置。

您可以使用
inspect
模块获取对象定义位置的信息:

否,不适用于变量。变量只是对任意python对象的引用,如果您可以找到变量,那么您已经找到了定义它的函数、类或模块

我猜想您想知道python对象在何处定义;对于许多可以通过对象的
\uuuu file\uuuu
属性确定的对象。对于类,您必须首先遍历回它的模块,对于方法,遍历到它的函数,对于函数,找到它的代码对象,对于代码对象,使用它们的
.co_filename
属性,等等

或使用自动执行该过程:

>>> import inspect
>>> inspect.getsourcefile(inspect.getsourcefile)
'/usr/lib/python2.6/inspect.py'

你得给我们更多。不是针对变量,而是针对对象,你通常可以确定它们的定义位置,是的。我讨厌在不知道原因的情况下被否决。我没有否决你的问题,但最初的版本太不明确了。您添加的额外信息表明,您实际上想知道一些与两个人发布答案时必须猜测的完全不同的信息。如果这是一次性任务,为什么不使用grep(或ack grep)之类的工具来搜索代码以查找该变量的其他引用?您必须包含更多信息。
打印是否成功?您是否为变量名进行了grep?这是一个函数、一个类、一个模块吗?我指的是这个名字,所以我想这没办法。无论如何,谢谢。@gg.kaspersky:那么你说的
name
是什么意思?您可以检查代码对象,查看附加到它的局部变量,获取引用它们的字节码的行偏移量,等等。这很痛苦,但也是可能的。基本上,我看到一个变量,我不明白python如何知道它是什么,我的大脑会引发一个NameError异常:)。显然,它是在一些外部范围内定义的,但我需要研究。@gg.kaspersky:如果您有一个对函数或代码对象的引用,那么您可以从Python代码中了解到这一点。但这并不适合胆小的人,需要对Python有一些深入的了解。为什么不把变量名改成grep呢?我想知道python是否提供了一个直接的解决方案。我在网上搜索,没有找到任何东西,所以我在这里问。