首页 > 解决方案 > 为什么在稍后给它一个实际值之前将一个 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)

标签: pythonrospy

解决方案


谷歌搜索部分代码将我带到这个页面,该页面分解了每一行代码。

具体到上面有问题的部分,该网站指出:

我们初始化一个全局计数器以及一个发布者。如果我们想在程序的所有函数中使用它们,我们必须在全局范围内声明它们,这远非最优。稍后我们将看到 OOP 代码将解决该问题。

因此,简而言之,这是一种声明变量而无需为其分配任何内容的方法。如果它是一个字符串,你可以像这样声明它,some_string = ""但是因为它pub是一个“发布者”,所以这只是一种更简单的方式来声明它以供以后在代码中使用。


推荐阅读