-2

假设我想探索importPython 中的语句。如何从 Python 命令行中找到import定义的文件?注意我在 Windows 7 中使用 Python 2.7.6 (iPython)。

对于大多数对象,只需输入对象名称即可。例如:

import os
os

产生以下结果:

<module 'os' from 'C:\Anaconda\lib\os.pyc'>

但是你不能对基本命令做同样的事情,比如import.

我曾尝试搜索我的 Python 文件夹,但不出所料,没有像C:\Anaconda\lib\import.py. 有没有一种简单的方法可以找出这些语句的定义位置(我意识到大部分时间它将在 c 代码中,但这就是我所追求的)?

更新 (5/27/14)

似乎人们认为使用内置命令无法以任何简单的方式完成。但是,如果您的生活依赖它,您可以在 Python 中编写一些不雅的 grep 类型函数,不是吗?

4

2 回答 2

1

import不是module这样os的。相反,它是一个statement.

https://docs.python.org/2/reference/simple_stmts.html#import

于 2014-05-21T00:09:19.580 回答
0

当您os在导入后调用时,它会打印文件的路径,因为它是一个模块。相反,import是一个声明:

>>> import math
>>> math
<module 'math' from '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/math.so'>
>>> import
  File "<stdin>", line 1
    import
         ^
SyntaxError: invalid syntax
>>> 

以防万一您觉得您需要知道,以下是其他在称为空白时执行类似操作的语句

>>> with
  File "<stdin>", line 1
    with
       ^
SyntaxError: invalid syntax
>>> yield
  File "<stdin>", line 1
SyntaxError: 'yield' outside function
>>> return
  File "<stdin>", line 1
SyntaxError: 'return' outside function
>>> continue
  File "<stdin>", line 1
SyntaxError: 'continue' not properly in loop
>>> import
  File "<stdin>", line 1
    import
         ^
SyntaxError: invalid syntax
>>> raise
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: exceptions must be old-style classes or derived from BaseException, not NoneType
>>> assert
  File "<stdin>", line 1
    assert
         ^
SyntaxError: invalid syntax
>>> del
  File "<stdin>", line 1
    del
      ^
SyntaxError: invalid syntax
>>> break
  File "<stdin>", line 1
SyntaxError: 'break' outside loop
>>> 
于 2014-05-28T02:19:38.730 回答