Python中如何将作为全局变量的嵌套列表传入函数完成数据追加?
核心结论
Python中列表属于可变对象,如果仅修改嵌套列表的内容(比如给子列表追加数据、修改某个位置的元素值),不需要使用global声明即可直接操作全局的sensors变量。
不需要global的场景
你要执行追加数据的操作属于修改列表内容,直接在函数内操作即可,示例代码如下:
# 全局初始化 sensors = [[] for i in range(4)] def append_sensor_data(sensor_index, data): # 无需加global声明,直接操作列表内容 sensors[sensor_index].append(data) # 测试调用 append_sensor_data(0, 24.7) append_sensor_data(2, 31.2) print(sensors) # 输出:[[24.7], [], [31.2], []]
需要加global的场景
只有当你需要给sensors变量整体重新赋值(也就是让这个全局变量指向一个全新的列表对象)时,才需要加global声明:
def reset_sensors(sensor_count): # 要修改sensors本身的指向,必须加global声明 global sensors sensors = [[] for i in range(sensor_count)] # 测试调用 reset_sensors(6) print(len(sensors)) # 输出:6
注意事项
- 操作嵌套列表时注意索引不要越界,初始
sensors只有4个子列表,合法索引范围为0~3
内容的提问来源于stack exchange,提问作者user1584421
相关产品推荐
相关产品推荐

