假设脚本中有一个全局变量pi=3.14。在大多数情况下,pi在脚本中的函数和类中被用作3.14。但是,用户有时可能需要更改该值。用户可以在不修改脚本的情况下更改脚本中pi的值吗?(用户不想将圆周率作为参数传递给函数。(
例如,用户在另一个脚本或Jupyter笔记本中定义自己的pi,并导入相关的函数和类。然后,函数和类将使用新的pi。从软件设计的角度来看,有没有一个好的方法可以做到这一点?
提前谢谢!
通常情况下,如果不是完全必要,则在pythonbuiltins
中设置全局变量是一种糟糕的做法。
我会这么做:
# 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