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