Python函数间变量传递求助:如何实现跨函数传递姓名与分数
Python函数间传递数据的几种方法
先说明你给出的代码存在两个关键问题:
- 自定义的
print()函数覆盖了Python内置的print()函数,会导致后续打印操作出错 name()函数里的name是局部变量,其他函数无法直接访问
下面是几种在函数间传递姓名、分数这类数据的常用方案:
1. 返回值+参数传递(最推荐)
让函数处理完数据后返回结果,再把结果作为参数传给另一个函数,这是Python里最规范的方式:
def get_name(): name = input("what is your name? ") return name def print_name(name): print(f"你的名字是:{name}") # 调用流程 user_name = get_name() print_name(user_name) # 扩展到分数的完整示例 def get_score(): score = int(input("请输入你的分数:")) return score def show_result(name, score): print(f"{name},你的游戏分数是{score}分") user_score = get_score() show_result(user_name, user_score)
2. 全局变量(仅适合简单场景)
把变量声明为全局变量,所有函数都能直接访问,但这种方式会让代码逻辑变得混乱,不推荐在复杂游戏里使用:
user_name = "" user_score = 0 def set_name(): global user_name user_name = input("what is your name? ") def set_score(): global user_score user_score = int(input("请输入你的分数:")) def show_info(): print(f"姓名:{user_name},分数:{user_score}") # 调用 set_name() set_score() show_info()
3. 类封装(适合游戏场景)
游戏里通常用类来封装玩家的属性(姓名、分数)和行为,代码结构更清晰,方便后续扩展:
class Player: def __init__(self): self.name = "" self.score = 0 def input_name(self): self.name = input("what is your name? ") def update_score(self, add_score): self.score += add_score def show_status(self): print(f"玩家{self.name}当前分数:{self.score}") # 使用示例 player = Player() player.input_name() player.update_score(100) # 模拟游戏加分 player.show_status()
内容的提问来源于stack exchange,提问作者Sanstheskelet0n
相关产品推荐
相关产品推荐

