python - 从另一个 .py 文件导入函数不仅仅导入该函数?
问题描述
为了说明我遇到的问题,请考虑以下内容。我有两个 .py 文件,一个名为 main.py,另一个名为 testfction.py。它们都在同一个目录中。
main.py 的内容:
from testfunction import mytestfunction
mytestfunction()
testfunction.py的内容:
def mytestfunction():
for number in range(0,10):
print number
print "Hi"
我的印象是导入一个函数只会导入那个函数。但是,当我运行 main.py 时,我得到的是:
Hi
0
1
2
3
4
5
6
7
8
9
>>>
为什么调用 print 函数?它不是我导入的功能的一部分!
解决方案
我的印象是导入一个函数只会导入那个函数。
你错了。
第一次导入模块时,导入语句将执行整个模块,包括任何全局级别的打印语句。同一模块的后续导入将重新使用缓存中的现有模块sys.modules
,这可能是您误会整个模块未执行的原因。
通常,您会发现不打算在导入时执行的代码位于条件内,如下所示:
def mytestfunction():
for number in range(0,10):
print number
if __name__ == "__main__":
print "Hi"
推荐阅读
- python - 如何将初始数据放在 CreateView 中的表单上?
- python-3.x - Tensorflow 对象检测 API - 推理后如何读取 TFRecord?
- python - 输入到 CNN 的超像素
- c - 输入字符串由空终止字符组成
- slack - Slack conversations.list 方法没有列出所有频道
- firebase - 使用数据库时看不到 Firebase 的网络调用?
- java - 在 Java 中引用对象
- android - Kotlin CountDownTimer lateinit 属性尚未初始化且未找到 CoreComponentFactory
- elasticsearch - Elasticsearch,映射类型字符串不能包含启用的false 为什么?
- swift - UITABLE view sections with different prototype cells in each section