在Python中,定义常量通常有以下几种方法:
使用全大写字母命名
MY_CONSTANT = "value"
使用`const`关键字(Python 3.6及以上版本支持):
const MY_CONSTANT = "value"
使用`immutable`类型注解(Python 3.8及以上版本支持):
MY_CONSTANT: str = "value"
使用`functools.lru_cache`装饰器(适用于计算密集型的常量):
from functools import lru_cache
@lru_cache(maxsize=None)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)
使用`functools.singledispatch`装饰器(适用于多态常量):
from functools import singledispatch
@singledispatch
def add(a, b):
raise NotImplementedError
@add.register
def _(a: int, b: int) -> int:
return a + b
@add.register
def _(a: str, b: str) -> str:
return a + b
使用`functools.total_ordering`装饰器(适用于具有比较方法的常量):
from functools import total_ordering
@total_ordering
class MyClass:
def __init__(self, value):
self.value = value
def __eq__(self, other):
return self.value == other.value
def __lt__(self, other):
return self.value < other.value
请注意,Python并没有内置的常量类型,常量通常是通过命名约定来表示的,即使用全大写字母命名变量。在Python中,常量实际上是可以被修改的,但按照惯例,程序员会遵循这一约定,不修改这些变量。