source()導致指定文件中的「符號」(函數,變量)被加載到test.py文件的命名空間/作用域中。這意味着source()是這個問題的錯誤工具。 (使用Orip顯示的技巧,將函數分配給第一個source()之後的另一個符號/名稱,因爲其他代碼依賴於所需函數在初始名稱下可用,所以會調用錯誤的函數)
使用Python的導入語句,可以通過將文件視爲Python模塊來實現函數位於不同的名稱空間中。爲此,您必須將包含所需文件的目錄路徑包含到Python自己的「搜索路徑」中 - sys.path:
suite_mine/tst_testcase1/test的內容。PY:
# -*- coding: utf-8 -*-
import os.path
import sys
# Add path to our modules to the Python search path at runtime:
sys.path.append(os.path.dirname(findFile("scripts", "file1.py")))
sys.path.append(os.path.dirname(findFile("scripts", "file2.py")))
# Now import our modules:
import file1
import file2
def main():
# Access functions in our modules:
file1.do_it()
file2.do_it()
suite_mine/tst_testcase1/file1.py的內容:
# -*- coding: utf-8 -*-
import test
def do_it():
test.log("file1.py")
suite_mine的內容/ tst_testcase1/file2.py:
# -*- coding: utf-8 -*-
import test
def do_it():
test.log("file2.py")
所得日誌條目:
file1.py
file2.py
不確定我得到了縮進權,但比以前好了至少80%。 – Torxed
Yup.All fine.I在編輯器中做了同樣的事情,但反射看起來不同: - | –