2 回答

TA貢獻1719條經驗 獲得超6個贊
好吧,我不是這方面的專家,但是如何將您的重定向if __name__ == "__main__": 到另一個函數并從您的另一個文件中調用該函數?
文件 1:
def main_file1:
arg1 = 1
arg2 = 2
foo(arg1, arg2)
if __name__ == "__main__":
main_file1()
文件2:
from file1 import *
def somefunc():
main_file1()
但是,我不確定您為什么要這樣做。通常,您的整個項目中只有 1 個主要功能來使事情順利進行并從那里調用其他功能。
最終這種失敗的文件的主要功能的目的

TA貢獻1773條經驗 獲得超3個贊
如果你有文件
文件1.py
def foo(arg1, arg2):
pass
if __name__ == "__main__":
arg1 = 1
arg2 = 2
foo(arg1, arg2)
并且file2.py在同一目錄中,您可以:
文件2.py
from file1 import foo
arg1 = 1
arg2 = 2
foo(arg1, arg2)
您將需要重新定義arg1并arg2像您一樣,但這只是導入您想要的功能的問題。這將為您提供函數,但沒有任何全局變量,file1.py因為它們受if __name__ == "__main__"語句保護
更新
如果您不想在內部重新分配,則file2.py可以執行以下操作:
文件1.py
def foo(arg1, arg2):
pass
def new_function(): #make a new function that you can import
arg1 = 1
arg2 = 2
foo(arg1, arg2)
if __name__ == "__main__":
new_function()
文件2.py
from file1 import new_function
new_function()
這還不是最糟糕的,因為您仍然包含arg1和arg2作為局部變量,所以沒有巨大的命名空間問題,但現在您可以導入它們,因為它們在if name == main您的代碼部分中不受保護。
添加回答
舉報