python - 为什么在稍后给它一个实际值之前将一个 Python 变量初始化为 None 呢?
问题描述
也就是说,pub = None
下面的值是多少?何时以及为什么这是一个好习惯?
counter = 0
pub = None
def callback_receive_number_data(msg):
global counter
counter += msg.data
new_msg = Int64()
new_msg.data = counter
pub.publish(new_msg)
sub = rospy.Subscriber('/number', Int64, callback_receive_number_data)
pub = rospy.Publisher('/number_count', Int64, queue_size=10)
解决方案
谷歌搜索部分代码将我带到这个页面,该页面分解了每一行代码。
具体到上面有问题的部分,该网站指出:
我们初始化一个全局计数器以及一个发布者。如果我们想在程序的所有函数中使用它们,我们必须在全局范围内声明它们,这远非最优。稍后我们将看到 OOP 代码将解决该问题。
因此,简而言之,这是一种声明变量而无需为其分配任何内容的方法。如果它是一个字符串,你可以像这样声明它,some_string = ""
但是因为它pub
是一个“发布者”,所以这只是一种更简单的方式来声明它以供以后在代码中使用。
推荐阅读
- mysql - Mysql Geometry 最近位置 距离
- python - 如何用分类轴覆盖条形图上的数据点
- input - 哪种方法可以更快地生成 n 个正整数?
- javascript - 在 JavaScript 中使用数组的 While 循环
- python - 将 numpy 数组重新排序为没有循环的新位长元素
- python - Audiomath TypeError - MakeRise、MakeFade、MakeHannWindow
- javascript - 函数默认对象,具有默认值的道具未定义
- google-play-console - 接受“Play 应用签名条款”,无需先上传证书
- python - bazel 记录在 BUILD 文件中
- amazon-web-services - AWS Terraform 错误:“预期 cidr_block 包含有效值,得到:错误:无效 CIDR 地址:”