首页 > 解决方案 > 在函数内部定义全局时出现 UnboundLocalError

问题描述

我知道这是非常常见的错误,但我可以找到我的错误。我有带有周边数据的数据框,例如:

>>>name    perimeter
0  al      24.5
1  dl      43.7
2  yl      1222.4
3  pl      213.2
4  kl      120
...

我想检查什么是周长中值,然后根据周长中值添加新列。我在函数之前定义中值,然后在函数内部将中值定义为全局:

per_median=df['perimeter'].median()

def z(row):
    global per_median
    if row['perimeter'] > per_median:
        val = 'yes'
    elif row['perimeter'] < per_median:
        val = 'no'
    return val

df['perimeter_warning'] = df.apply(z,axis=1)

出于某种原因,即使我在函数内部使用 global ,我仍然会收到此错误:

UnboundLocalError:分配前引用的局部变量“val”

我做错了什么?我预计将其定义为全局将解决问题。

标签: pythonpandasfunctionglobal

解决方案


尝试在代码中再添加一个场景

if row['perimeter'] == per_median: 然后为 val 设置一些值。

或者,如果您不想处理此问题,请在使用之前尝试为 val 分配默认值。


推荐阅读