首页 > 解决方案 > 代码在转移到函数时停止工作?

问题描述

我正面临将 python 类转换为函数以用作另一个主要代码的助手的问题。以下是代码及其比较的摘录:

sensor_data = {'temperature': 0}
client = mqtt.Client()
client.loop_start()

try:
    while True:
        temperature = sense.get_temperature()
        print(u"Temperature: {:g}".format(temperature))
        sensor_data['temperature'] = temperature

        # Sending temperature data to ThingsBoard
        client.publish('v1/devices/me/telemetry', json.dumps(sensor_data), 1)

except KeyboardInterrupt:
    pass

client.loop_stop()
client.disconnect()

但是当我尝试转移到要调用的函数时,假设“数据”是要输入函数的随机变量:

def getTemperature(data)
    sensor_data = {'temperature': 0}
    client = mqtt.Client()
    client.loop_start()
    
    try:
        while True:
            print(u"Temperature: {:g}".format(data))
            sensor_data['temperature'] = data

            # Sending temperature data to ThingsBoard
            client.publish('v1/devices/me/telemetry', json.dumps(sensor_data), 1)

    except KeyboardInterrupt:
        pass

    client.loop_stop()
    client.disconnect()
    
    return data

该函数没有收到任何错误,但它没有在控制台或任何东西上输出任何打印语句。发生这种情况是否有原因?

标签: pythonfunction

解决方案


def getTemperature(data):
    sensor_data = {'temperature': 0}
    client = mqtt.Client()
    client.loop_start()
    try:
        while True:
            print(u"Temperature: {:g}".format(data))
            sensor_data['temperature'] = data
            # Sending temperature data to ThingsBoard
            client.publish('v1/devices/me/telemetry', json.dumps(sensor_data), 1)
    except KeyboardInterrupt:
        pass
    except Exception as ex:
        print(ex)

    client.loop_stop()
    client.disconnect()

    return data

getTemperature(5)

尝试这个。


推荐阅读