gpt4 book ai didi

python - 元组作为单例的实际使用

转载 作者:太空狗 更新时间:2023-10-30 00:49:13 25 4
gpt4 key购买 nike

data models 上的文档中它提到了使用单个项目元组作为单例的可能性,因为它是不可变的。

Tuples

A tuple of one item (a ‘singleton’) can be formed by affixing a commato an expression...

据我对 Python 的理解,单例的功能类似于常量。它是一个固定值,保持相同的内存地址,以便您可以测试相等性或同一性。例如,NoneTrueFalse 都是内置单例。

然而,考虑到这种用法,使用这种方式定义的元组对于笨拙的语法来说似乎是不切实际的:

HELLO_WORLD = ("Hello world",)
print HELLO_WORLD
> ('Hello world',)
print HELLO_WORLD[0]
> Hello world

更不用说,如果您记得对其进行索引,它只能作为单例使用。

HELLO_WORLD[0] = "Goodbye world"

Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
HELLO_WORLD[0] = "Goodbye world"
TypeError: 'str' object does not support item assignment

这意味着您可以轻松地做到这一点:

HELLO_WORLD = "Goodbye world"
print HELLO_WORLD
> Goodbye world

考虑到这些限制,这个单例实现有什么意义吗?我看到的唯一优点是创建起来很简单。我见过的其他方法是更复杂的方法(使用类等),但是我没有想到还有其他用途吗?

最佳答案

我认为这对实现单例根本没有用,它没有添加任何东西:元组仍然可以被新的单元素元组覆盖。无论如何,在您的示例中,您的值是一个字符串,它本身已经是不可变的。

但我认为您提到的那行文档(“一项的元组(一个‘单例’)”)根本不是指单例模式,而是这个词的数学用法,参见Wikipedia on Singleton (mathematics)

The term is also used for a 1-tuple (a sequence with one element).

关于python - 元组作为单例的实际使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31915428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com