我正在编写一些Python代码,并且像往常一样,我尝试使我的函数变小并给它们一个明确的名称(虽然有时候有点太长)。我到了没有全局变量的地步,并且函数需要传递给它。
但我想,在这种情况下,每个函数都可以访问任何其他函数。为什么不限制他们访问其他函数,就像我们限制对其他变量的访问一样。
我正在考虑使用嵌套函数,但这意味着闭包,这对我来说更糟糕。
我也在考虑使用对象,我认为这是OOP的重点,尽管在我的情况下它会是一个太多的样板。
有没有人在她/他的脑海里遇到这个问题,解决方法是什么。
答案 0 :(得分:7)
拥有全局可变数据并不是一个好主意,例如:变量。可变性是关键所在。你可以拥有常量和功能的内容。
但是一旦编写依赖于全局可变状态的函数,它就会限制函数的可重用性 - 它们总是绑定到那个共享状态。
答案 1 :(得分:2)
为了每个人阅读代码,将函数分组到类中将有助于对它们进行心理分类。使用类self
参数也可以通过将它们分组到类中来组织变量。
您可以使用函数名称开头的single leading underscore来限制其访问权限。
答案 2 :(得分:0)
不鼓励使用全局变量,因为它们很难跟踪程序的状态。如果我正在调试一个1,000行的文件,并且在函数中间的某个地方,我看到some_well_named_flag = False
,我会有很多工作要做,看看它是如何影响到什么的否则在程序中。
功能没有状态。他们可以修改程序的地方或多或少地受限于参数和返回值。
如果您仍然担心控制对函数的访问,那么Java或C ++等其他语言可以帮助您实现这一目标。 Python的一个约定是将不应该在类外部使用的函数作为下划线的前缀,然后相信人们不要从类外部调用它们。