我有一个使用全局变量的函数,我在代码的其他部分也使用了这些变量,而且这个函数对整个代码的正确功能至关重要。
但是,我发现建议不要使用全局变量,有什么方法可以让我重写函数而不使用全局变量吗?谢谢您
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]))
建筑物和步行者列表分别是建筑和步行者类的实例列表。
当我试着不导入globals时,我要么得到一个错误,变量在赋值前被引用,要么我的Box2D世界在重置时崩溃,因为建筑物和步行者的列表没有正确清空,所以它们开始增长,以至于程序崩溃。
非常感谢您
你可以将所有的全局变量转化为函数参数,并将返回语句用于你的新Tesla,例如: 。
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
也需要修改。