1
在bash我有一個文件 「function.sh
」:如何在循環中使用導入的函數,並在該函數中使用循環變量?
_bash_function_() {
echo $i
}
和文件「 exec.sh
」
#!/bin/bash
. ./function.sh
range=(1 2 3)
for i in ${range[@]}; do
_bash_function_
done
這使輸出:
1
2
3
在Python中我有一個文件「function.py
」:
def py_function():
print (i)
和文件 「」:
#!/opt/local/bin/python3
from function import *
list = ['1','2','3']
for i in list:
py_function()
這給出了一個錯誤:
NameError: name 'i' is not defined
但是如果我具備的功能,並在同一個文件的循環:
#!/opt/local/bin/python3
def py_function():
print (i)
list = ['1','2','3']
for i in list:
py_function()
輸出:
1
2
3
我怎樣才能在Python中輸出這個輸出,函數在一個文件中,而循環在另一個文件中?
有bash'之間'幾個關鍵的不同Python在這裏。首先,'bash'變量是真正的全局變量,因爲你真的沒有模塊; 'source'只是簡單地執行代碼*就好像它出現在當前文件中一樣。在'py_function'中,'i'是指'function.i',而不是獨立變量'exec.i'(或'__main __。i',取決於文件如何執行)。其次(在這裏並不直接相關),'bash'使用動態作用域,這意味着一個非局部變量引用函數被調用*的範圍,而不是它被定義*的地方。 Python使用靜態範圍。 – chepner