这是因为 Python 在导入模块时会缓存已经导入的模块对象,当再次导入同一个模
▥Python
𝄐 0
python导入自己的文件,python导入数据文件,python中导入数据的代码,python导入数据出错,导入文件python,python导入错误
这是因为 Python 在导入模块时会缓存已经导入的模块对象,当再次导入同一个模块时,Python 会直接返回缓存中已有的模块对象,而不会重新执行该模块的代码。因此,即使编辑了已导入的模块并重新导入,变动也不会得以体现。
例如,假设有一个名为 example.py 的模块,其内容如下:
python
# example.py
message = "Hello, world!"
def print_message():
print(message)
然后在另一个 Python 脚本中导入该模块并调用其中的函数:
python
# main.py
import example
example.print_message() # 输出 "Hello, world!"
现在,我们修改 example.py 中的 message 变量,并尝试重新导入并调用:
python
# example.py
message = "Goodbye, world!" # 修改 message 的值
def print_message():
print(message)
python
# main.py
import example
example.print_message() # 仍然输出 "Hello, world!"
可以看到,虽然我们已经编辑了 example.py 并重新导入了该模块,但实际上调用 example.print_message() 输出的仍然是旧的值 "Hello, world!"。这是因为 Python 缓存了模块对象,在第二次导入该模块时没有重新执行模块中的代码。要使变动得以体现,需要强制重新加载模块,可以使用 reload() 函数来实现:
python
# main.py
import example
example.print_message() # 输出 "Hello, world!"
from importlib import reload
reload(example)
example.print_message() # 输出 "Goodbye, world!"
这是因为 Python 在导入模块时会缓存已经导入的模块对象,当再次导入同一个模块时,Python 会直接返回缓存中已有的模块对象,而不会重新执行该模块的代码。因此,即使编辑了已导入的模块并重新导入,变动也不会得以体现。
例如,假设有一个名为 example.py 的模块,其内容如下:
python
# example.py
message = "Hello, world!"
def print_message():
print(message)
然后在另一个 Python 脚本中导入该模块并调用其中的函数:
python
# main.py
import example
example.print_message() # 输出 "Hello, world!"
现在,我们修改 example.py 中的 message 变量,并尝试重新导入并调用:
python
# example.py
message = "Goodbye, world!" # 修改 message 的值
def print_message():
print(message)
python
# main.py
import example
example.print_message() # 仍然输出 "Hello, world!"
可以看到,虽然我们已经编辑了 example.py 并重新导入了该模块,但实际上调用 example.print_message() 输出的仍然是旧的值 "Hello, world!"。这是因为 Python 缓存了模块对象,在第二次导入该模块时没有重新执行模块中的代码。要使变动得以体现,需要强制重新加载模块,可以使用 reload() 函数来实现:
python
# main.py
import example
example.print_message() # 输出 "Hello, world!"
from importlib import reload
reload(example)
example.print_message() # 输出 "Goodbye, world!"
本文地址:
/show-274706.html
版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。