我主要是一名C#开发人员,但我目前正在使用Python开发一个项目.
我怎样才能在Python中表示Enum的等价物?
阅读Python 3.1中的更改,我发现了一些......意外的:
sys.version_info元组现在是一个命名元组:
我之前从未听说过命名元组,我认为元素可以用数字(如元组和列表)或键(如dicts)索引.我从没想过他们可以两种方式编入索引.
因此,我的问题是:
我想它可能是类似的collections.namedtuple,但这更像是一个冻结的词典(一个半冻结的词典).不是吗?
A"frozendict"应该是一个冰冻的字典,它应该有keys,values,get,等,并支持in,for等等.
那么为什么总是建议尽可能经常使用const呢?在我看来,使用const可能比C++中的帮助更痛苦.但话说回来,我是从python的角度来看这个:如果你不想改变某些东西,不要改变它.所以说,这里有几个问题:
似乎每次我将某些东西标记为const时,我都会收到错误,并且必须将某些其他函数更改为const.然后这导致我必须在其他地方更改另一个功能.这是通过经验变得更容易吗?
使用const的好处真的足以弥补麻烦吗?如果您不打算更改对象,为什么不编写不会更改它的代码?
我应该注意到,在这个时间点,我最关注的是使用const来实现正确性和可维护性的好处,尽管了解性能影响也很好.
有没有一个可以重载赋值运算符的魔术方法,比如__assign__(self, new_value)?
我想禁止重新绑定一个实例:
class Protect():
def __assign__(self, value):
raise Exception("This is an ex-parrot")
var = Protect() # once assigned...
var = 1 # this should raise Exception()
Run Code Online (Sandbox Code Playgroud)
可能吗?这是疯了吗?我应该上药吗?
我找不到finalPython中相当于Java的文档,有这样的东西吗?
我正在创建一个对象的快照(如果有任何失败则用于恢复); 一旦分配了这个备份变量,它就不应该被修改 - Python中的类似最终功能对此非常有用.
这个问题很普遍但是我更了解python中的良好编码实践...
我想在任何函数中定义一个我可以在其中使用的常量,而不必将其作为参数传递,并且无需在声明之后在任何地方更改它 - 也许它很难让它无法改变但不是确定我能做到这一点.
在编程风格(编码,名称约定等)方面,最好的方法是什么?
即,GLOBAL_CONSTANT ='this_variable_will_not_be_changed'
我的python代码会有这种形式,它也是好的风格吗?
#!/usr/bin/env python
import sys
import os
GLOBAL_CONSTANT='this_variable_will_not_be_changed'
def test():
print GLOBAL_CONSTANT
return 0
def main():
test()
return 0
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud) 我在python中编写一个包含许多常量变量的程序.我想创建一个文件,它将保存所有这些变量,如C中包含许多#define的.h文件.我尝试使用configparser但是我发现使用它并不容易.
你知道更好的方法吗?
我正在学习Python,我只是与常量和文字常量相混淆.它们是什么?我们使用它们的目的是什么?它们与正常变量的区别是什么?
非常感谢你.
编辑:
我是一个真正的初学者.作为初学者,我可以说我对编程世界一无所知.就像我不知道什么是表达式,反之亦然.
我一直在使用"A byte of python"一书学习python语言,在本书的某个地方,我遇到了一个讨论文字和常量的部分.我在那里分享了一节:
5.2.文字常量
文字常量的一个例子是5,1.23之类的数字,或者像'This is a string'或"It is a string!"这样的字符串..
它被称为文字因为它是文字的 - 你从字面上使用它的值.数字2总是代表自己而不是其他 - 它是一个常量,因为它的值不能改变.因此,所有这些都被称为文字常量.
在它所说的"它被称为文字,因为它是字面意义 - 你按字面意思使用它的价值",我只是没有得到这一部分.这本书试图说我们按字面意思使用这个值是什么?另一个模糊点是数字2是一个常数,因为它的值不能改变.怎么可能?我们可以改变它,如:
stack = 2
stack = 3
Run Code Online (Sandbox Code Playgroud)
首先,我将数字2分配给堆栈,然后我更改了堆栈的值(这是该书声称它是一个常量的数字2,因此无法更改)并为其分配了数字3.所以我很容易改变了数字2的值.我真的很困惑,如果你没有明白我的意思,请告诉我,我可以举出更多的例子.谢谢你给你的时间.
python ×9
constants ×2
python-3.x ×2
c++ ×1
class ×1
dictionary ×1
enums ×1
final ×1
immutability ×1
java ×1
keyword ×1
literals ×1
metaclass ×1
methods ×1
namedtuple ×1
oop ×1
tuples ×1