是否可以像这样在Python中声明一个变量?:

var

使它初始化为None?Python似乎允许这样做,但一旦你访问它,它就崩溃了。这可能吗?如果不是,为什么?

编辑:我想这样做的情况下:

value

for index in sequence:

   if value == None and conditionMet:
       value = index
       break

相关问题

为什么函数可以修改调用者感知到的一些参数,而不能修改其他参数? Python变量声明

另请参阅

Python名称和值 其他语言有“变量”


当前回答

首先,我对你最初提出的问题的回答

问:我如何发现一个变量是否在我的代码中定义了?

答:在源文件中阅读,直到看到定义该变量的行。

而且,您已经给出了一个代码示例,其中有各种相当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)]

其他回答

我衷心建议你阅读其他语言有“变量”(我添加了一个相关链接)-在两分钟内你会知道Python有“名称”,而不是“变量”。

val = None
# ...
if val is None:
   val = any_object

我通常将变量初始化为表示类型的东西,例如

var = ""

or

var = 0

如果它将是一个对象,那么在实例化它之前不要初始化它:

var = Var()

你看起来像在用Python写C语言。如果你想在一个序列中找到一些东西,Python有内置的函数来做这件事,比如

value = sequence.index(blarg)

如果None是一个有效的数据值,那么您需要以另一种方式修改变量。你可以用:

var = object()

这个哨兵是尼克·科格伦提出的。

首先,我对你最初提出的问题的回答

问:我如何发现一个变量是否在我的代码中定义了?

答:在源文件中阅读,直到看到定义该变量的行。

而且,您已经给出了一个代码示例,其中有各种相当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)]