python 函数嵌套和nonlocal关键字

python 函数嵌套和nonlocal关键字python函数可以嵌套使用,使用也比较简单,举个栗子:defouter():print("outer")definner():print("inner")inner()outer()##运行结果:outerinnernonlocal关键字:与global关键字有点相似,可以对比着理解。nonlocal关键字只能作用域局…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

python函数可以嵌套使用,使用也比较简单,举个栗子:

def outer():
    print("outer")
    def inner():
        print("inner")
    inner()
outer()

## 运行结果:
outer
inner

nonlocal关键字:

与global关键字有点相似,可以对比着理解。nonlocal关键字只能作用域局部变量,且始终找离当前最近的上层局部作用域中的变量。看栗子:

a = 1
def outer():
    nonlocal a
    a = 2
outer()
print(a)

结果:报错  SyntaxError: no binding for nonlocal ‘a’ found,

原因分析:nonlocal关键字是能作用域局部变量,当使用nonlocal声明变量 a 时,就会往上最近一层局部作用域寻找局部变量 a ,结果没找着,报错。

a = 1
def outer():
    global a 
    a = 2
    def inner():
        nonlocal a
        a = 3
    inner()
    print(a)
outer()
print(a)

结果:报错  SyntaxError: no binding for nonlocal ‘a’ found,

原因分析:当使用nonlocal声明变量 a 时,就会往上最近一层局部作用域寻找局部变量 a ,此时外层局部作用域虽然能找到变量a,但是这找到的 这个a 已经被global声明为全局变量了,所以报错。

a = 1
def outer(): 
    a = 2
    def inner():
        nonlocal a
        a = 3
        def inner2():
            print(a)
        inner2()
        print(a)
    inner()
    print(a)
outer()
print(a)

## 运行结果:
3
3
3
1

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196874.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 查询Linux版本命令_查看redhat版本命令

    查询Linux版本命令_查看redhat版本命令1、#uname-a(Linux查看版本当前操作系统内核信息)2、#cat/proc/version(Linux查看当前操作系统版本信息)3、#cat/etc/issue或cat/etc/redhat-release(Linux查看版本当前操作系统发行版信息)4、#cat/proc/cpuinfo(Linux查看cpu相关信息,包括型号、主频、内核信息等)…

    2022年4月19日
    1.0K
  • 指针函数和函数指针「建议收藏」

    指针函数和函数指针「建议收藏」概述指针函数和函数指针是C语言里两个比较绕的概念。但是不仅面试题爱考,实际应用中也比较广泛。很多人因为搞不清这两个概念,干脆就避而远之,我刚接触C语言的时候对这两个概念也比较模糊,特别是当指针函数、函数指针、函数指针变量、函数指针数组放在一块的时候,能把强迫症的人活活逼疯。其实如果理解了这些概念的本质,是不需要死记硬背的,理解起来也比较容易。指针函数指针函数:顾名思义,它的本质是一个函数…

    2022年6月22日
    32
  • Vue(七)SPA 单页面及应用方式「建议收藏」

    Vue(七)SPA 单页面及应用方式「建议收藏」vue:单页面应用SPA。

    2022年10月13日
    3
  • 重复字符串 leetcode_求最长不重复字符串

    重复字符串 leetcode_求最长不重复字符串原题链接给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,”pwk

    2022年8月8日
    9
  • gridview的属性_grid css

    gridview的属性_grid css正在做一个项目,其中用到了Gridview控件,内容如下即每行里又包括两小行,这个功能可以用两个嵌套的gridview实现,第二个要实现的是每个大行之间用实现相隔,每个小行之间用虚线网上很多资料都是关于Gridview的,但是关于样式的就不多后来发现可以在后台程序中动态改变CELL的式样protectedvoidGridView2_RowDataBound(obj

    2025年12月1日
    10
  • python下载及安装教程[通俗易懂]

    python下载及安装教程[通俗易懂]   Python目前已支持所有主流操作系统,在Linux,Unix,Mac系统上自带Python环境,一般默认装的是Python2版本,Windows系统上没有Pyhton环境,需要我们手动安装一下,现在一般都是python,目前最新是python3.9.7,下面就让跟着我进行安装吧!下载python安装包进入python官网下载(官网https://www.python.org/)。鼠标指向Downloads(不用点击)会弹出下拉框,直接点击windows下的Python3.9.7可直接下载

    2022年5月18日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号