我对创建global
变量与在main
中定义变量之间的区别感到困惑。我有一个非常具体的例子,我想解释一下。具体代码如下:
def f():
username = input("Please enter your username: ")
print("Thank you for entering your username")
#I want to be able to use the "username" variable outside of the "f" function
#and use it multiple times throughout my code
print(f"Your username is: {username}")
这是我最初认为正确的解决方案:
def f():
global username
username = input("Please enter your username: ")
print("Thank you for entering your username")
f()
print(f"Your username is: {username}")
这是我被告知的解决方案是实际正确/首选的方式:
def f():
username = input("Please enter your username: ")
print("Thank you for entering your username")
return username
username = f()
print(f"Your username is: {username}")
第二种解决方案的原因是最好返回一个变量,并且非常不鼓励/应该避免使用global
关键字创建一个global
变量,但我很困惑,因为我认为第二种解决方案还创建了一个在global
范围内定义的变量,因为他们正在main
中定义变量(这是我阅读的文章,它证实了global
的概念 与main
变量相比,如果有人可以确认这是正确的,那也会有所帮助,因为我对此有多个问题)。
我对这个 Python 概念以及为什么第二个解决方案是更好/首选的解决方案方法感到困惑。有人可以解释一下吗?
第二个确实创建了一个全局变量。但是,关键的区别在于您的函数不依赖于它。函数的用户也可以写入
def f():
username = input("Please enter your username: ")
print("Thank you for entering your username")
return username
name_of_user = f()
print(f"Your username is: {name_of_user}")
请注意,不依赖于函数用于存储输入的名称和调用方用于接收输入的名称。你的局部变量username
不存在于函数之外,你的函数不知道它返回的值将如何使用,甚至根本不知道它被使用。
通过使用局部变量,您可以减少组件之间的依赖关系,从而降低代码的复杂性