是否可以像这样在Python中声明一个变量?:
var
使它初始化为None?Python似乎允许这样做,但一旦你访问它,它就崩溃了。这可能吗?如果不是,为什么?
编辑:我想这样做的情况下:
value
for index in sequence:
if value == None and conditionMet:
value = index
break
相关问题
为什么函数可以修改调用者感知到的一些参数,而不能修改其他参数?
Python变量声明
另请参阅
Python名称和值
其他语言有“变量”
在Python 3.6+中,你可以使用变量注释:
https://www.python.org/dev/peps/pep-0526/#abstract
PEP 484引入了类型提示,也就是类型注释。虽然它的主要关注点是函数注释,但它也引入了类型注释的概念来注释变量:
# 'captain' is a string (Note: initial value is a problem)
captain = ... # type: str
PEP 526旨在为Python添加注释变量类型的语法(包括类变量和实例变量),而不是通过注释来表示它们:
captain: str # Note: no initial value!
这似乎更直接地符合你的问题“在Python中是否可能只声明一个变量而不赋值?”
注意:Python运行时不强制函数和变量类型注释。它们可以被第三方工具使用,如类型检查器、ide、linter等。
首先,我对你最初提出的问题的回答
问:我如何发现一个变量是否在我的代码中定义了?
答:在源文件中阅读,直到看到定义该变量的行。
而且,您已经给出了一个代码示例,其中有各种相当python化的排列。你正在寻找一种方法来扫描序列中匹配条件的元素,所以这里有一些解决方案:
def findFirstMatch(sequence):
for value in sequence:
if matchCondition(value):
return value
raise LookupError("Could not find match in sequence")
显然,在这个例子中,你可以根据你想要实现的目标,将提升值替换为返回值None。
如果你想要所有符合条件的东西,你可以这样做:
def findAllMatches(sequence):
matches = []
for value in sequence:
if matchCondition(value):
matches.append(value)
return matches
还有另一种计算收益率的方法我就不给你们看了,因为它的工作方式很复杂。
此外,还有一种实现这一目标的方法:
all_matches = [value for value in sequence if matchCondition(value)]