You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何导入Python文件中的函数时整个文件会自动执行?如何解决?

解决导入模块时仅执行目标函数,不运行模块内其他代码的方法

问题核心是:Python在导入模块时,会执行模块内所有顶层代码。你需要把demos_tkinter.py中不想在导入时运行的代码(Tk实例创建和mainloop())放到特定判断块里,仅在直接运行该模块时才执行。

修改demos_tkinter.py代码

将原代码里的Tk实例创建和mainloop()代码包裹在if __name__ == "__main__":判断中:

from tkinter import * 
def print_something():
    print("hello")

# 仅在直接运行当前模块时才执行以下代码
if __name__ == "__main__":
    roots=Tk()
    roots.mainloop()

原理说明

  • 当你直接运行demos_tkinter.py时,Python会把模块的__name__变量设为"__main__",此时判断条件成立,Tk窗口代码会执行。
  • 当你从intro_to_tkinter.py中导入demos_tkinter模块时,模块的__name__变量会被设为模块名"demos_tkinter",判断条件不成立,Tk窗口代码就不会运行。

保持intro_to_tkinter.py不变

你的intro_to_tkinter.py不需要修改,直接运行它就只会执行print_something()函数,而不会触发demos_tkinter.py里的Tk窗口代码:

from tkinter import * 
from demos_tkinter import print_something 
root=Tk() 
root.configure(bg="#000000") 
print_something() 
root.mainloop()

内容的提问来源于stack exchange,提问作者Nirbhik Dhakal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:57:04