python - 局部变量返回显示错误信息
问题描述
我认为这不是一个新问题,但我认为显示此消息很奇怪 - 分配前引用了局部变量df_ret - 这是我重新计算不平衡数据集的函数:
def down_sample(df, target, positive_label, negative_label):
positives = df.filter(df[target] == positive_label)
negatives = df.filter(df[target] == negative_label)
num_positives = positives.count()
num_negatives = negatives.count()
if (num_positives > num_negatives): # down_sample positives
sampled_df = positives.sample(withReplacement=False,
fraction=num_negatives/num_positives,
seed=SEED)
df_ret = sampled_df.union(negatives)
return df_ret
解决方案
错误消息“局部变量 df_ret 在赋值之前引用”在这里非常准确 - 函数运行并且if
条件num_positives > num_negatives
不正确,因此if
块中的代码从未运行,因此df_ret
从未分配变量(从未声明和初始化)。
您可以使用几种模式来解决此问题,具体取决于此功能的客户的期望:
if
如果条件不满足,则在函数内抛出异常,然后让调用者catch
异常在block之前初始化
df_ret
变量if
,让函数在if
条件不满足时返回一个默认值
推荐阅读
- java - 如何获取静态[]数组的源类
- groovy - 如何从列表中的字符串中删除扩展名(groovy)?
- c# - 以最简单的方式使用 Microsoft Graph 查找电子邮件
- linux - kubernetes 在创建 pod 时出现 CrashLoopBackOff 错误
- c# - 十进制数逗号样式
- javascript - 打字稿:.JS文件中的react-redux,react-i18next HOC类型干扰?
- javascript - 打开后停止 $mdPanel 控制器调用
- javascript - 使用 JSON.stringify 将 JavaScript 对象转换为树
- python - Tensorflow - 如何在使用 tfrecord 文件进行训练期间增强图像和边界框
- visual-studio-code - 更漂亮的换行符不接受规则