相关疑难解决方法(0)

如何在Python中创建常量?

有没有办法在Python中声明一个常量?在Java中,我们可以用这种方式创建常量值:

public static final String CONST_NAME = "Name";
Run Code Online (Sandbox Code Playgroud)

Python中上述Java常量声明的等价物是什么?

python constants

903
推荐指数
23
解决办法
91万
查看次数

Python中变量和函数名称的命名约定是什么?

来自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 variables function naming-conventions

719
推荐指数
11
解决办法
42万
查看次数

Python中枚举的常见做法是什么?

可能重复:
如何在Python中表示"枚举"?

Python中枚举的常见做法是什么?即它们如何在Python中复制?

public enum Materials
{
    Shaded,
    Shiny,
    Transparent,
    Matte
}
Run Code Online (Sandbox Code Playgroud)

python enums

138
推荐指数
4
解决办法
13万
查看次数

按定义顺序迭代python枚举

我正在使用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中不支持定义顺序的迭代?假设后者,是否有一种简单的方法可以强制它按顺序发生?

python enums python-2.7

57
推荐指数
1
解决办法
4万
查看次数

如何扩展Python Enum?

什么是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 enums python-3.x

42
推荐指数
7
解决办法
1万
查看次数

布尔有两个可能的价值观.是否存在具有三种可能值的类型?

可能重复:
在Python中实现'枚举'的最佳方法是什么?

我正在编写一个函数,理想情况下,我想返回三种状态之一:"是","否"和"不知道".

  1. 任何编程语言的类型都有三种,只有三种状态吗?像布尔值,但有三个状态而不是两个?

  2. 在没有这种类型的语言(如Python)中,表示这种类型的最佳类型是什么?

    目前我认为我将使用整数(0"不",1"不知道"和2"是"),但也许有更好的方法?整数似乎有点"神奇的数字".

    我可以回来True,False或者None,正如在大多数比较环境中None评估的那样False,错误似乎有点成熟.

python logic boolean

37
推荐指数
3
解决办法
1万
查看次数

是否需要"使用严格"的Python编译器?

存在用于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

30
推荐指数
6
解决办法
1万
查看次数

python中的枚举

重复:
在Python中实现"枚举"的最佳方法是什么?

什么是在python中进行枚举的公认方式?

例如,目前我正在写一个游戏,并希望能够"向上","向下","向左"和"向右"移动.我正在使用字符串,因为我还没有弄清楚枚举是如何在python中工作的,所以我的逻辑充满了这样的事情:

def move(self, direction):
    if direction == "up":
        # Do something
Run Code Online (Sandbox Code Playgroud)

我想替换"up"类似的东西Directions.up

python enums

30
推荐指数
6
解决办法
5万
查看次数

Python的枚举等效

可能重复:
在Python中实现'枚举'的最佳方法是什么?

不同索引名称列表(如C/C++或Java中的Enum)的Python习惯用法是什么?

澄清:我希望将值的属性设置为限制范围,例如卡套件Heart, Club, Spade, Diamond.我可以用0到3范围内的int来表示它,但它允许超出范围输入(如15).

python enums

21
推荐指数
2
解决办法
1万
查看次数

enum和namedtuple有什么区别?

我想知道enum和namedtuple之间有什么区别,以及何时应该使用一个而不是另一个.

python enums namedtuple python-3.x

20
推荐指数
2
解决办法
7523
查看次数