如何在Python中不重复执行函数,获取用户输入函数内的变量?
解决函数内变量无法全局访问的问题
嘿,这个问题我刚学Python的时候也踩过坑!你的playername函数里的变量是局部变量,函数执行完就会被销毁,所以外部根本拿不到。下面给你几个实用的解决方案,都能实现“只执行一次函数,后续直接用用户名”的需求:
方案1:让函数返回用户名,存到全局变量里
这是最直观的方法,把函数的结果“传出来”,存在一个全局变量里,之后想用就直接用这个变量就行:
def get_playername(): print("What is your name?") # 用return把输入的名字返回出去 return input() # 只调用一次函数,把结果存到全局变量player_name里 player_name = get_playername() # 后面随便用啦!比如: print(f"Welcome to the game, {player_name}!") print(f"Ready to start your adventure, {player_name}?")
方案2:结合类来存储用户名(适合你的项目结构)
你提到已经在用类来整理代码了,那把用户名作为类的实例属性是更贴合的做法。初始化类的时候就获取一次用户名,之后类里的所有方法都能直接访问:
class SimpleTextGame: def __init__(self): # 创建游戏实例时,只执行一次用户名获取 print("What is your name?") self.player_name = input() def show_welcome(self): # 类里的方法直接用self.player_name print(f"Hello {self.player_name}! Let's begin the game.") def check_progress(self): print(f"{self.player_name}, you've completed 30% of the game!") # 创建游戏实例,这时候会弹出输入用户名的提示 game = SimpleTextGame() # 后续调用方法都不用再输入用户名了 game.show_welcome() game.check_progress()
方案3:用全局变量(不推荐,但可以了解)
你也可以在函数里声明全局变量,但这种方式容易让代码变混乱,尤其是项目变大后,所以尽量少用:
# 先在全局定义一个空变量 player_name = "" def get_playername(): # 声明这个变量是全局的 global player_name print("What is your name?") player_name = input() # 执行一次函数,给全局变量赋值 get_playername() # 后续直接用全局的player_name print(f"Nice to meet you, {player_name}!")
总的来说,方案1和方案2更推荐,尤其是方案2,完全符合你用类来组织代码的需求,代码结构也更清晰~
内容的提问来源于stack exchange,提问作者user9431223
相关产品推荐
相关产品推荐

