如果您有以下脚本:
import requests
requests.get()
并将其命名为requests.py
,您将收到属性错误,指出requests
没有属性get
,因为Python指的是脚本名称请求,并且该名称没有属性get
。
但是,如果我有这个脚本:
import time
time.sleep()
我将其命名为time.py
,不会有任何错误。在Python 2.7.11和Python 3.5.3上都试过。
为什么这里不适用同样的规则?
答案 0 :(得分:2)
因为time
是内置的,而请求是网站包:
尝试打印__file__
属性以查看模块的位置:
print(time.__file__)
AttributeError: 'module' object has no attribute '__file__'
您收到错误,但是requests
会得到答案
print(requests.__file__)
C:\Python34\lib\site-packages\requests\__init__.py
help(time.__loader__)
给出了另一个提示:
>>> help(time.__loader__)
Help on class BuiltinImporter in module importlib._bootstrap:
class BuiltinImporter(builtins.object)
| Meta path import for built-in modules.
请求:
>>> help(requests.__loader__)
Help on SourceFileLoader in module importlib._bootstrap object:
class SourceFileLoader(FileLoader, SourceLoader)
| Concrete implementation of SourceLoader using the file system.
无论如何,不将您的模块称为内置函数或库包。在这两种情况下,你都会遇到问题。