python - 函数#python的内部环境

标签 python

在 python 2.7 中编码时,我遇到了关于函数内部环境的问题。这是简单的示例代码:

m=3

def f(x):
    return m*x

当我在Python控制台中输入f(5)时,它返回15,这符合我的预期。但是,当我将代码编辑为:

m=3

def f(x): 
    m=m+1
    return m*x

控制台返回UnboundLocalError:赋值前引用的局部变量'm',我不明白为什么。

我认为这两种情况下变量 m 没有区别。然而,一个是正确的,另一个则不正确。

最佳答案

发生这种情况是因为在第一种情况下,m 没有歧义,即它是一个全局。然而,在第二种情况下,在 m=m+1 中使用 m 会抛出错误,因为 python 会查找名为 m 的本地变量,并且它没有找到任何。您必须明确声明您正在使用全局。以下将起作用。

m=3

def f(x): 
    global m
    m=m+1
    return m*x

关于python - 函数#python的内部环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38047127/

相关文章:

python - 使用 python 的 os.walk 来搜索特定的目录名称?

python - Python Numpy计算的协方差矩阵每次都变化

php - Python/Django 到 PHP 的过渡?学习曲线错误?

python - python中的Catmull-Rom样条

python - 为什么 django 不使用我的自定义编码器类?

python - 如何控制 fbprophet 的输出?

python - Google Cloud Datastore 中事务的高度一致性

python - 未找到 Amazon EMR Pyspark 模块

python - beta 二项分布和 beta 分布的 alpha 和 beta 估计

python - 使用cx_oracle批量下载表