{site_name}

{site_name}

🌜 搜索

这是因为 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!"