Ger*_*set 1 c c++ python magic-numbers concept
在C/C++中使用以下代码,例如:
int foo[] = {0, 0, 0, 0};
Run Code Online (Sandbox Code Playgroud)
没有神奇的数字吧?
现在,Python的"等效"将是:
foo = [0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
仍然没有神奇的数字.
但是,在Python中,同样的事情可以写成:
foo = [0] * 4
Run Code Online (Sandbox Code Playgroud)
现在我们有一个神奇的数字.或者我们呢?
我猜这个和其他类似的东西出现在这些和其他语言上.
Joc*_*zel 11
并非每个数字都是魔术常数.原因4和四个0是幻数(在任何语言中)是完全不清楚为什么这个数字是,4而不是任何其他数字.
例如,在用众所周知的六面模具玩的游戏的背景下
def roll_die():
return random.randint(1,6)
Run Code Online (Sandbox Code Playgroud)
这段代码没有神奇的数字,因为很容易看到数字的来源.
另一方面,很难猜出其他程序员知道哪些数字.例如,并非所有人都知道牌组中牌的数量,因此在那里使用命名常量更有意义.
如果一个数字是"魔法",它完全取决于上下文,它与语言无关.如有疑问,请将您的常量命名为安全.
与(在C或C++中)有何不同:
int foo[4] = {0};
Run Code Online (Sandbox Code Playgroud)
?
在所有这些情况下,数组的大小都是一个神奇的数字.