我正在文件的开头导入signal
。然后我希望在像这样的函数中使用它:
os.kill(pid, signal.SIGKILL)
我收到错误:
UnboundLocalError: local variable 'signal' referenced before assignment.
如果我在函数内导入信号
,我就不会遇到这样的问题,为什么会发生这种情况?
编辑:示例代码
import signal
def func():
if args.kill: # Never triggered
import signal
os.kill(int(args.pid), signal.SIGKILL)
elif args.name:
os.kill(int(args.pid), signal.SIGKILL)
最佳答案
在函数中导入名称也是一种赋值;本质上你的样本可以进一步简化为:
def function(arg1, arg2):
if False:
import signal
os.kill(pid, signal.SIGKILL)
这使得 signal
成为函数中的局部变量,并且 Python 不会查找全局名称。
import signal
行使 signal
成为本地名称,但由于该行从未执行,因此 signal
永远不会绑定(bind),异常(exception)情况是抛出。
从函数中删除所有 导入信号
行,或者将其移出要无条件导入的条件(因此始终绑定(bind)信号
)。
关于python - 导入信号时出现未绑定(bind)局部变量错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21090756/