创建一个稍后会为其分配了其他字符串的变量时,通常会这样做:
my_string = ""
表示数组:
my_array = []
等等。对于稍后会为其分配对象的变量,您可以为其分配任何内容,但是pythonic要做什么?使用' empty'创建一个类的实例似乎是一种浪费。事情传递给它。
答案 0 :(得分:1)
您可以使用None
。
或者,如果您有可能想要将其与None
进行比较,并希望了解其中的差异,则可以使用object()
。虽然您仍然需要创建一个未使用的对象,但如果my_object is object
尚未更新,则True
只会返回my_object
。
答案 1 :(得分:1)
在你的示例中,字符串和列表,通常是设置每个添加到空对象。字符串支持连接和列表支持空列表上的无数功能。
以下是字符串的示例,如果您没有s=''
,则逻辑会中断:
>>> vowels='aeiou'
>>> s=''
>>> for ch in 'This is a longer string':
... if ch in vowels: s+=ch
...
>>> s
'iiaoei'
如果你有一个支持构建或添加空事物的对象,你可以调用构造函数。
foo() # object foo that I will add to later...
或者,经典Python示例:
>>> from collections import Counter
>>> c=Counter()
>>> c=Counter()
>>> c+=Counter('123')
>>> c+=Counter('11222233333')
>>> c
Counter({'3': 6, '2': 5, '1': 3})
所以:
第一种情况: 如果要添加对象,请创建一个对象。调用像Counter()
这样的构造函数或像[]
第二种情况:如果您希望稍后在程序中发送一个对象为'truthy' or 'falsy'的信号作为某个逻辑快捷方式(您的对象要填充对象)或已测试)使用True
或False
。或者,如果您发送此对象为空或无效或尚未处理的信号,请使用None
。
如果不是第一种情况'或者'第二个案例'上面 - 然后不。你是混淆的。
答案 2 :(得分:0)
如果您担心构建不必要的对象,可以使用None
。因为它是一个单例(即每个Python解释器只有一个None
副本),所以你不会浪费时间和内存来创建一个完整的对象。以下是一个示例用法:
>>> user_input = None
>>> try:
user_input = int(input('Enter a digit: '))
except ValueError:
user_input = 'failed'
Enter a digit: abjkjsds
>>> user_input
'failed'
>>>
由于True
和False
也是单身,因此您可以使用它们来产生相同的效果。可能存在使用布尔值而不是简单地使用None
更合适的情况。