Python能否将函数调用作为其他函数的默认参数?求可行方案
解决方法
问题原因
Python函数的默认参数是在函数定义阶段就完成求值的,你直接把self.choose_terrain(coordinates)设为默认参数时,self还没对应到具体的实例,coordinates也不是定义时存在的变量,自然会报错。
可行方案
用None作为默认占位符,在函数内部判断并动态计算地形类型,这样既满足默认调用时用choose_terrain生成随机地形,也支持特例传入'green':
def create_tile(self, coordinates, terrain_type=None): # 如果没传地形类型,自动调用choose_terrain生成 if terrain_type is None: terrain_type = self.choose_terrain(coordinates) # 下面写创建tile的逻辑,比如根据terrain_type设置颜色、绘制方块等 # 示例: tile_color = terrain_type # 用Turtle绘制方形tile的代码...
使用方式
- 默认生成随机地形:直接调用
self.create_tile(某个坐标) - 生成绿色起始tile:调用
self.create_tile(起始坐标, terrain_type='green')
这样既符合你的需求,也避开了默认参数求值时机的问题。
内容的提问来源于stack exchange,提问作者ElvisJr
相关产品推荐
相关产品推荐

