zoukankan      html  css  js  c++  java
  • 函数和常用模块【day05】:装饰器前戏(二)

    本节内容

    1. 嵌套函数
    2. 局部作用域和全局作用域的访问顺序

    一、嵌套函数

     1、定义

      在一个函数的函数体内,用def 去声明一个函数,而不是去调用其他函数,称为嵌套函数。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def foo():
        print("in the foo")
        def bar():  #在foo函数体内,用def声明一个函数
            print("in the bar")
     
        bar()
    #调用foo函数
    foo()
     
    #输出
    in the foo
    in the bar

     以上是高阶函数的定义,但是我们来看看下面这种情况是不是高阶函数呐?

    1
    2
    3
    4
    5
    6
    7
    8
    def bar():
        print("in the bar")
     
    def foo():
        print("in the foo")
        bar()  #调用bar函数
     
    foo()

    很显然不是,因为只是调用了bar函数,没有用def去声明一个函数。

    二、局部作用域和全局作用域的访问顺序

    1、先来看一个小例子

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #局部作用域和全局作用域的访问顺序
    x=0
    def grandpa():
        x=1
        def dad():
            x=2
            def son():
                x=3
                print(x)
            son()
        dad()
    #调用grandpa
    grandpa()
     
    #输出
    3

     很显然最后输出的是3,这个说明作用域:只能是从里往外找,一层一层的的找。

     

  • 相关阅读:
    request内置对象
    JSP页面、包含
    HTTP协议
    html简介
    数据访问层工具类
    数据运算
    可变于不可变对象分类
    有序 无序 的区别
    字符串方法
    day01_final
  • 原文地址:https://www.cnblogs.com/luoahong/p/9889859.html
Copyright © 2011-2022 走看看