全局变量和 main 中定义的变量之间的区别?



我对创建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不存在于函数之外,你的函数不知道它返回的值将如何使用,甚至根本不知道它被使用。

通过使用局部变量,您可以减少组件之间的依赖关系,从而降低代码的复杂性

相关内容

  • 没有找到相关文章

最新更新