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,这个说明作用域:只能是从里往外找,一层一层的的找。

     

  • 相关阅读:
    Mac下搭建SVN服务器
    iOS的扩展类,扩展属性
    关于TableViewCell高度自适应问题的整理
    关于适配的一点考虑
    Visual format language
    css命名定义
    定位之初解
    定位以及relative和absolute的结合
    float的一点想法
    javascript的学习路子
  • 原文地址:https://www.cnblogs.com/luoahong/p/9889859.html
Copyright © 2011-2022 走看看