You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:55:24