程序设计——更新全局变量值
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
假设我在脚本中有一个全局变量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