python - NameError,名称未定义 - 如何在变量被定义/声明/分配之前使用它?
问题描述
我目前正在构建一个包含多个图表的仪表板。用户可以选择使用 plotly-dash 下拉菜单来选择当前月份。图表的初始值始终是当前月份。
现在到我的问题。这些图表需要多次计算,这些计算是在 Pandas 中预先完成的。我的代码顺序如下:
- 定义数据框
- 使用月份变量“T”(硬编码)在 Pandas 中进行计算
- 使用 plotly 生成图表并使用下拉菜单将它们绘制在 plotly dash
- 运行服务器并打印仪表板
我在步骤 3 中定义的下拉输出是:
def update_output(value):
return 'You have selected month "{}"'.format(value)
我想在第 1 步之后就使用此输出 - 因此我可以使计算动态化并使所选月份不被硬编码。本质上,我想将我的硬编码计算行重写为:
df[column].where[df['month_column'] = update_output].sum()
关于如何在计算期间使用此变量 update_output 而不会出现 NameError(未识别变量)错误的任何想法?
我已经阅读了有关全局、本地、环境变量的信息……尽管在定义之前似乎找不到使用变量的方法……
非常感谢你的帮助!
解决方案
在赋值之前有很多方法可以定义变量。一种方法是使用内置类型函数。python中有很多不同的类型,你可以访问这个网站了解所有类型是什么,但是你可以给一个变量一个类型的空模板。您所要做的就是使用内置类型函数之一。例如,如果您想创建一个空字符串类型对象,您可以执行以下操作。
basic_string = str()
如果您只想做一个空对象,可以为这个变量分配任何类型(甚至是自定义对象),您可以执行以下操作。
basic_object = object
推荐阅读
- ios - 有没有像 IQKeyboardManagerSwift 这样的东西可以在 Swift iOS 中向上移动 UITextView?
- android - 为什么我在尝试 setAdapter 时会收到 nullpointerexception?
- c - 未正确将 DoubleArray 打印为表格
- node.js - AWS 文件加载适用于本地主机,但不适用于 EC2(节点、快递、反应)。获取 403 禁止
- java - 通过单击 Android Studio 中的按钮在 webview 中获取随机 Youtube 视频
- vue.js - VueRouter:是否可以从一条路线平滑向下滚动动画到另一条路线?
- pine-script - 将基本 Pine 脚本策略转换为研究以创建警报
- python - Pandas 和 SQL 等效项(双重分组)
- html - “document.getElementById()”函数存储在哪里?
- swift - SwiftUI ForEach 刷新使视图弹出