gpt4 book ai didi

Python 全局变量的使用

转载 作者:太空狗 更新时间:2023-10-30 02:21:43 24 4
gpt4 key购买 nike

我是 Python 编码的初学者,这对我来自 Java 的人来说有点跳跃。我现在的问题是关于在 Python 中将全局变量用于常量等。在 Java 中,我们对常量有两种想法,我们可以有这样的想法:

private static final HOME_URL_CONST = "localhost:8080";

或者如果我们需要在运行时赋值:

private static HOME_URL = "";
public void init(){
HOME_URL = "localhost:8080";
}

要点是,在后一种情况下,一旦设置了静态变量,它就会保持设置状态。然而在 Python 中,情况并非如此。如果我创建一个全局变量然后在一个函数中分配它,该变量将只在该函数内具有分配的值。现在我有这样的东西:

def initialize():
global HOME_URL
with open("urls.txt", 'rb') as f:
HOME_URL = json.load(f.read())['urls']

这是一种可以接受的方法吗?或者是否有一些我不知道的影响和副作用?

最佳答案

在 Python 中,const 变量本身没有定义,因为它是动态的。常量是通过 Style 指定的,因此引用自 PEP 8

Constants are usually defined on a module level and written in all capital letters with underscores separating words. Examples include MAX_OVERFLOW and TOTAL.

所以,如果你想让一个变量作为常量使用,那么在模块级别定义它,用下划线分隔的大写命名并遵循约定,这样在任何其他范围内都没有其他变量与常量冲突多变的。在任何情况下,您都不需要任何全局限定符,因为在模块级别定义的变量在任何情况下都会在函数级别的范围内。

所以在这个特殊情况下

HOME_URL = "localhost:8080"
def initialize():
#global HOME_URL #You don't need this
home_url = HOME_URL
with open("urls.txt", 'rb') as f:
#Constants are not supposed to mutate
home_url = json.load(f.read())['urls']

关于Python 全局变量的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14444973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com