我有这个使用全局变量的函数,我也在代码的其他部分使用这些变量,而且这个函数对于整个代码的正确功能至关重要。
但是,我发现建议不要使用全局变量,有没有办法在不使用全局变量的情况下重写函数?谢谢
def reset():
global buildings, my_Car, walkers
_destroy()
if len(box2world.bodies) == 0:
my_Car.destroy_flag = False
buildings = []
walkers = []
create_buildings(bigger_map=False)
create_pedestrians()
cars_random_building = random.choice(buildings) #choose a building from the list to generate a car next to the building
my_Tesla = Car(box2world, position=(cars_random_building.position[0] + 1.55 * cars_random_building.shape[0], cars_random_building.position[1]))
建筑物和步行者列表分别是建筑物类和行人的实例列表。
当我尝试不导入全局变量时,我要么收到一个错误,即变量在赋值前被引用,要么我的 Box2D 世界在重置期间崩溃,因为建筑物和步行者的列表没有正确清空,所以它们开始增长到程序崩溃的程度。
谢谢
您可以将所有全局变量转换为函数参数,并使用新特斯拉的 return 语句,例如:
def reset(box2world, buildings, walkers, myCar):
if not box2world.bodies:
my_Car.destroy_flag = False
buildings.clear()
walkers.clear()
create_buildings(buildings, bigger_map=False)
create_pedestrians(walkers)
cars_random_building = random.choice(buildings)
my_Tesla = Car(box2world, position=(cars_random_building.position[0] + 1.55 * cars_random_building.shape[0], cars_random_building.position[1]))
return my_Tesla
请注意,reset
内部调用的函数也需要修改。