zoukankan      html  css  js  c++  java
  • Python:函数变量的使用

    1、上层函数不能直接使用其嵌套函数的变量;

    def func1(x, y):
        z = x + y
        def func2():
            m = 3
        z += m
        return z
    print(func1(1, 2))
    # 报错:name 'm' is not defined

    2、上层函数中的变量可以在其嵌套函数内直接使用:

    def func1(x, y):
        z = x + y
        def func2():
            m = 3 + z
            return m
        return func2()
    print(func1(1, 2))
    # 输出:6

    3、嵌套函数中,不能即使用上层函数变量,又有自己的变量与该上层变量同名:

    def func1(x, y):
        z = x + y
        def func2():
            # m=3 + z:z 是上层函数的变量
            m = 3 + z
            # z=m ** 2:z 是func2()函数自身的变量
            z = m ** 2
            return z
        return func2()
    print(func1(1, 2))
    # 报错:local variable 'z' referenced before assignment

     # 提前声明该变量非本地变量(系统会自动从上层函数中查找该变量):nonlocal z

     # 代码中的变量 z 均为func1()函数的变量

    • def func1(x, y):
          z = x + y
          def func2():
              nonlocal z
              m = 3 + z
              z += m
              return z
          return func2()
      print(func1(1, 2))
      # 输出:9

    4、上层函数的形参(x,y),可以在其嵌套函数中直接使用;

    def func1(x, y):
        def func2():
            m = 3 + x
            z = m + y
            return z
        return func2()
    print(func1(1, 2))
    # 输出:6

    5、上层函数的形参(x,y),可以作为其嵌套函数的形参:形参的名字必须相同

    def func1(x, y):
        def func2(x, y):
            m = 3 + x
            z = m + y
            return z
        return func2(x, y)
    print(func1(1, 2))
    # 输出:6
  • 相关阅读:
    node 使用笔记
    体会 git 之优越性
    Notes for building gimp-print
    Selenium Books
    Using MongoDB in C#
    Learning coding online
    USING NHIBERNATE WITH MySQL
    Data Visualization Books
    Web Automation with Selenium (C#)
    Gearman In Action
  • 原文地址:https://www.cnblogs.com/volcao/p/9120096.html
Copyright © 2011-2022 走看看