zoukankan      html  css  js  c++  java
  • python 函数嵌套及作用域

    函数可以嵌套吗?当然可以

     我们可以看到,外部函数outer_func()的函数体中嵌套了一个函数inner_func(),并且outer_func()体中
    还调用了内部函数inner_func(),所以每当调用outer_func()的时候,都会调用一次inner_func(),我
    们来看一下打印结果:

     我们可以看到,内部函数inner_func()被调用了。

    其实,我们可能更加的关心作用域
    我们看如下代码:

     首先,变量a是一个全局变量,变量b是一个局部变量,但需要注意的是该变量位于内部函数inner_func()的外面,
    相当于是一个Enclosed的作用范围。所以,当函数内部要引用全局变量并修改全局变量时,需要用到关键字global,
    内部函数需要用到外部函数的变量并修改时,需要用到关键字nonlocal.
    关于变量作用域,可以参照LEGB原则
    L:Local
    E:Enclosed
    G:Global
    B:Build-in
    那么当访问变量时,会先从Local(局部)寻找,若没有则去下一层Enclosed(闭包域,即外部函数的作用域)中寻找,
    若仍然没有找到则去Global(全局)中寻找,最后去到Build-in(内置关键字)中寻找。

    tips:小范围内可以访问大范围中的变量,注意是访问。如内部函数可以访问外部函数变量和全局变量,当反过来却
    不行,如外部函数访问内部函数的变量。若要修改全局变量或者外部函数的变量,则需要对变量进行关键字修饰,如
    对全局变量进行global 修饰,对外部函数的变量进行nonlocal修饰,这样就能明确应用的是变量是全局的还是外部函
    数的。注意,对应可变变量(如列表,字典)来说,不需要进行global或nonlocal修饰,直接可以访问并修改



  • 相关阅读:
    物理好题随想
    学案12:电场强度和静电现象
    vscode插件记录
    windows使用总结
    元素周期律 + 元素周期表
    酸碱理论
    氮族元素——磷
    氮族元素——氮
    碱金属元素
    SDN第一次上机实验
  • 原文地址:https://www.cnblogs.com/leolsl/p/13024270.html
Copyright © 2011-2022 走看看