我有使用全局变量的函数,在代码的其他部分也使用了这些变量,并且此函数对于整个代码的正确功能至关重要。
但是,我发现建议不要使用全局变量,是否可以在不使用全局变量的情况下重写函数?非常感谢
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世界崩溃了,因为建筑物和步行者的列表没有正确清空,因此它们开始增长到程序崩溃了。
非常感谢您
答案 0 :(得分:1)
您可以将所有全局变量转换为函数参数,并将return语句用于新的Tesla。 G。 :
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
内部调用的函数也需要修改。