python - 导入信号时出现未绑定(bind)局部变量错误?

标签 python

我正在文件的开头导入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/

相关文章:

python - 在Python中将元组列表表示为二维数组

python - 如何在Python中匹配多行括号之间的文本

python - 曲面上的建模点

python - Jinja2中的多级模板继承?

python - 有没有办法结合CreateView和UpdateView?

Python:将带有 '|'的文本文件解析到MySql表

python - 如何在 IOS 应用程序上本地解析 AIML 文件?

python - 是否可以更改 if 语句中的 for 循环 header ?

python - 将图像分为径向部分并选择单个部分中的值

python - 预测建模 - 使用分组 ID 和移动平均值进行回归(python)