程序设计——更新全局变量值

Program design - update global variable value

假设我在脚本中有一个全局变量pi=3.14。在大多数情况下,pi 在函数中用作 3.14,在脚本中用作 类。但是,用户有时可能需要更改该值。用户是否可以在不修改脚本的情况下更改脚本中 pi 的值? (用户不想将 pi 作为参数传递给函数。)

比如用户在另一个脚本或者Jupyter notebook中定义了自己的pi,并导入相关的函数和类。然后,函数和 类 将使用新的 pi。从软件设计的角度来看,有什么好的方法吗?

提前致谢!

一般来说,如果这不是完全必要的话,将全局变量设置到 python builtins 中是一种不好的做法。

这是我会做的:

# foo_module.constants.py


class Constants:
    # set them as class variables
    pi: float = 3.14
    phi: float = 1.61

你的函数和 类:

# foo_module.my_application

from .constants import Constants


def circle_area(r):
    return Constants.pi * (r ** 2)


class Circumfator:
    def __init__(self):
        self.pi = Constants.pi

    def get_circumference(self, r):
        return 2 * r * self.pi

用户感知:

from foo_package.my_application import *


circle_area(10)  # returns 314.0
Circumfator().get_circumference(50)  # returns 314.0

# user changes pi
Constants.pi = 1

circle_area(10)  # returns 100
Circumfator().get_circumference(50)  # returns 100