是否可以在不使用nonlocal语句的情况下获取非局部变量的值?

我有一个局部变量x = "local",不幸的是,它与全局变量和非局部变量都共享其名称。在不更改任何名称的情况下,我可以访问所有三个值吗?因为x = "global"存在globals(),但是非局部变量呢?

最小示例说明了此问题:

x = "global"
def f(x="nonlocal"):
    def g():
        x = "local"
        print(x)  # same as locals()["x"]
        print(globals()["x"])
        # here I want to print the non-local x
    return g

f()()
崔宝城

我没有得到您必须使用相同名称的上下文。
无论如何,您可以将外部函数的局部变量捕获为非局部变量。

x = "global"


def f(x="nonlocal"):
    nonlocals = locals()

    def g():
        x = "local"
        print(x)
        print(nonlocals['x'])
        print(globals()["x"])

    return g


f()()

输出:

local
nonlocal
global

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么bash函数可以在不使用局部变量的情况下递归调用自身?

不使用局部变量的值

是否可以在不使用当前状态的条件语句的情况下使用状态机?

如何在不使用`if`语句的情况下获取所有Falsy变量

为什么在这种情况下静态局部变量不保留它的值?

如果在未设置任何内容的情况下局部变量获取默认值,为什么必须初始化获取变量“ xxx”?

是否可以在不使用lambda的情况下将本地过程绑定到letrec中的变量?

是否可以在不使用Eq的情况下使用==和/ =?

是否可以在不使用MFC的情况下使用CListCtrl

是否可以在不使用属性名称的情况下获取属性的PropertyInfo?

在不使用反射的情况下获取案例类中所有变量的值

是否可以在不使用循环的情况下找到控件?

是否可以在不使用 UIBezierPath 的情况下绘制虚线

是否可以在不使用Composer的情况下安装Laravel?

是否可以在不使用StoryBoard的情况下执行segue?

可以在不使用属性的情况下获取元组值吗?

是否在不将其存储为局部变量的情况下激活结构要比不将其存储为局部变量慢?

在不使用jQuery的情况下获取JavaScript的输入值?

类型不使用局部变量文本的值

如何在不使用多个if-语句的情况下将变量更改为其他值

如何在不使用多个查询语句的情况下将特定的dbs值分配给多个变量?

是否可以在不使用中间件功能的情况下增强express.js的req和res变量?

使用if语句将值分配给局部变量

是否可以使用window.onerror获取局部变量和参数值

是否可以在不使用Python本地数据库的情况下获取Chrome历史记录和书签?

是否可以在不使用 safedelete 或 softdelete 的情况下获取 django 模型中所有已删除项目的列表?

是否可以在不使用 for 循环(所有行值)的情况下从数组重写工作簿中的行?

子函数中是否可以使用局部变量?

是否可以在ngFor中使用简写局部变量?