gpt4 book ai didi

python - Execfile 与导入一起使用时运行文件两次

转载 作者:行者123 更新时间:2023-12-01 04:44:08 25 4
gpt4 key购买 nike

我想在我的 GUI 中有一个文本框和一个按钮,单击按钮时,它应该获取文本并将其存储在其他文件的变量中,然后运行其他文件。

我希望用户输入访问 token ,GUI 应将其保存在utilities.py 的全局变量access_token 中但是,当导入仅用于设置访问 token 的函数时,文件会运行,直到单击按钮为止。因此,实际上该文件运行了两次。

这是我的 gui.py

from Tkinter import *
import Tkinter as tk
from utilities import setAccessToken

root = tk.Tk()

def callback():
setAccessToken(E1.get())
execfile('utilities.py')

E1 = Entry(root,bd = 5, width = 10)
E1.pack()
#similarly other GUI stuff with command = callback()

mainloop()

这是我的utilities.py

access_token = ""
def setAccessToken(token):
global access_token
access_token = token

print 'Running Utilities : access_token =', access_token

我的预期输出是:

Running Utilities: access_token = my access token

但是我得到了两次输出,即:

Running Utilities: access_token =
Running Utilities: access_token = my access token

有什么方法可以在导入文件utilities.py时阻止其运行吗?

最佳答案

当你导入一个python文件时,其中的所有代码都会被执行。这就是 python 的工作原理。为了防止执行不需要的代码,我们应该始终使用 __name__ ,如下所示:

access_token = ""
def setAccessToken(token):
global access_token
access_token = token

if __name__ == '__main__':
print 'Running Utilities : access_token =', access_token

关于python - Execfile 与导入一起使用时运行文件两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29860814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com