python - 在函数内部定义全局时出现 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”
我做错了什么?我预计将其定义为全局将解决问题。
解决方案
尝试在代码中再添加一个场景
if row['perimeter'] == per_median: 然后为 val 设置一些值。
或者,如果您不想处理此问题,请在使用之前尝试为 val 分配默认值。
推荐阅读
- swift - 循环中的 URLSession 不起作用
- c# - 生成充满唯一整数的数组的当前代码崩溃
- java - URLFetchServiceFactory.getURLFetchService().fetch 处的 StackOverflowError
- php - 警告:strlen() 期望参数 1 是字符串,数组在 /includes/functions/general.php 第 159 行给出
- javascript - Javascript ES6 类:如何将事件从一个类发送到另一个类
- ruby-on-rails - 无法测试 AASM gem 引发的错误
- c# - 在 WinForms 经典桌面应用程序中获取 CoreDispatcher
- ios - iOS Swift 日期选择器选择下一个间隔
- javascript - 如何使用函数实例化空对象中的值
- delphi - Delphi,在 TPointerlist() 处编辑 Tenumstring 中的自动完成访问冲突