【发布时间】:2021-10-18 20:40:35
【问题描述】:
我正在编写一个简单的猜数程序,我想为代码的不同部分使用函数。第一个函数决定用户猜测的范围。我想将 user_input 的值携带到下一个函数中。我知道的唯一方法是使 user_input 成为全局变量。只是想知道有没有比将变量设为全局更好的方法来实现这一点?
def decide_range():
flag = True
while flag:
global user_input
user_input = input("Enter a value for range ")
if user_input.isdigit():
user_input = int(user_input)
if user_input < 2:
print("Number must be 2 or greater to play this game")
continue
print(f"You have entered {user_input}")
flag = False
else:
print("Not a valid integer")
def guess_Number():
print("Guess a number between 1 and",user_input)
【问题讨论】:
-
通常对于“我应该使用全局变量”的问题,答案通常是否定的,你不应该......(但你可以)......尝试使用命名空间封装(可能写一个类具有您需要的成员和功能)
-
比使用
global指令更好的方法是创建一个在内部保存值的对象实例。这样引用保持不变,您可以在不使用global的情况下修改值。事实上,我有时会使用相当于globals的类来保存我所有的共享值。 -
这能回答你的问题吗? Python Alternatives to Global Variables
-
我会更改“decide_range”以返回用户的输入,然后让“guess_number”调用“decide_range”。
-
你需要回到你的关于函数的资料,学习如何传递参数和返回值。
标签: python function scope global