有没有办法在Python中声明一个常量?在Java中,我们可以用这种方式创建常量值:
public static final String CONST_NAME = "Name";
Run Code Online (Sandbox Code Playgroud)
Python中上述Java常量声明的等价物是什么?
来自C#背景的变量和方法名称的命名约定通常是CamelCase或Pascal Case:
// C# example
string thisIsMyVariable = "a"
public void ThisIsMyMethod()
Run Code Online (Sandbox Code Playgroud)
在Python中,我已经看到了上面的内容,但我也看到了使用下划线:
# python example
this_is_my_variable = 'a'
def this_is_my_function():
Run Code Online (Sandbox Code Playgroud)
Python有更优选的,明确的编码风格吗?
可能重复:
如何在Python中表示"枚举"?
Python中枚举的常见做法是什么?即它们如何在Python中复制?
public enum Materials
{
Shaded,
Shiny,
Transparent,
Matte
}
Run Code Online (Sandbox Code Playgroud) 我正在使用python 3.4中的backported Enum功能和python 2.7:
> python --version
Python 2.7.6
> pip install enum34
# Installs version 1.0...
Run Code Online (Sandbox Code Playgroud)
根据python 3中的枚举文档(https://docs.python.org/3/library/enum.html#creating-an-enum),"枚举支持迭代,按定义顺序 ".但是,为了我,迭代不会发生:
>>> from enum import Enum
>>> class Shake(Enum):
... vanilla = 7
... chocolate = 4
... cookies = 9
... mint = 3
...
>>> for s in Shake:
... print(s)
...
Shake.mint
Shake.chocolate
Shake.vanilla
Shake.cookies
Run Code Online (Sandbox Code Playgroud)
我是否误解了某些内容,或者是在后向版本的Enums中不支持定义顺序的迭代?假设后者,是否有一种简单的方法可以强制它按顺序发生?
什么是Enum在Python 3.4中扩展类型的最佳实践,是否有可能这样做?
例如:
from enum import Enum
class EventStatus(Enum):
success = 0
failure = 1
class BookingStatus(EventStatus):
duplicate = 2
unknown = 3
Traceback (most recent call last):
...
TypeError: Cannot extend enumerations
Run Code Online (Sandbox Code Playgroud)
目前没有可能的方法来创建一个带有成员的基本枚举类,并在其他枚举类中使用它(如上例所示).有没有其他方法来实现Python枚举的继承?
可能重复:
在Python中实现'枚举'的最佳方法是什么?
我正在编写一个函数,理想情况下,我想返回三种状态之一:"是","否"和"不知道".
任何编程语言的类型都有三种,只有三种状态吗?像布尔值,但有三个状态而不是两个?
在没有这种类型的语言(如Python)中,表示这种类型的最佳类型是什么?
目前我认为我将使用整数(0"不",1"不知道"和2"是"),但也许有更好的方法?整数似乎有点"神奇的数字".
我可以回来True,False或者None,正如在大多数比较环境中None评估的那样False,错误似乎有点成熟.
存在用于Python的静态分析工具,但编译时间检查往往与Python所包含的运行时绑定哲学截然相反.这可能与一个静态分析工具来执行一些"包装标准Python解释器使用严格 "般的约束,但我们没有看到任何广泛采用的这样的事情.
有没有关于Python的东西会使"使用严格"的行为变得不必要或特别不受欢迎?
或者,Perl中的"使用严格"行为是否已被广泛采用?
注意:"必要"是指"实际必要",并非绝对必要.显然你可以在没有"use strict"的情况下编写Perl,但是(从我所见过的)大多数Perl程序员都会使用它.
注意:Python解释器包装器不需要 "使用严格"类似的约束 - 您可以使用类似于"use strict"的伪编译指示,这将被普通解释器忽略.我不是在谈论添加语言级功能.
更新:解释Perl每条评论中"use strict"的作用.(官方文档链接在第一段.)
"use strict"指令有三个不同的组件,其中只有两个非常有趣:
use strict vars:在程序中静态检查词法范围的变量用法.(请记住,在Python中,基本上只有global范围和local范围).许多Python短信检查这种事情.因为它是他们可以做的唯一的静态分析,所以直言不讳地假设你使用简单的词汇范围,并在你告诉他们闭嘴之前警告你那些看似错误的东西; 即
FOO = 12
foo += 3
Run Code Online (Sandbox Code Playgroud)
如果您没有对命名空间做任何想法,那么检查拼写错误就很有用.
use strict refs:防止符号命名空间解除引用.Python最接近的模拟是使用locals()和globals()进行符号绑定和标识符查找.
use strict subs:在Python中没有真正的模拟.
python compiler-construction perl static-analysis use-strict
什么是在python中进行枚举的公认方式?
例如,目前我正在写一个游戏,并希望能够"向上","向下","向左"和"向右"移动.我正在使用字符串,因为我还没有弄清楚枚举是如何在python中工作的,所以我的逻辑充满了这样的事情:
def move(self, direction):
if direction == "up":
# Do something
Run Code Online (Sandbox Code Playgroud)
我想替换"up"类似的东西Directions.up
可能重复:
在Python中实现'枚举'的最佳方法是什么?
不同索引名称列表(如C/C++或Java中的Enum)的Python习惯用法是什么?
澄清:我希望将值的属性设置为限制范围,例如卡套件Heart, Club, Spade, Diamond.我可以用0到3范围内的int来表示它,但它允许超出范围输入(如15).
我想知道enum和namedtuple之间有什么区别,以及何时应该使用一个而不是另一个.
python ×10
enums ×6
python-3.x ×2
boolean ×1
constants ×1
function ×1
logic ×1
namedtuple ×1
perl ×1
python-2.7 ×1
use-strict ×1
variables ×1