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
  • 相关阅读:
    1.python的一些规范
    linux 命令总结
    【背包专题】D
    【算法入门竞赛经典】【7.2枚举排列】
    【练习赛补题】问题 E: 花生采摘 【模拟】
    【背包专题】B
    【背包专题】A
    【ACM对拍程序~】
    【背包专题】E
    河南省第七届大学生程序设计竞赛 问题 A: 物资调度【简单dfs】
  • 原文地址:https://www.cnblogs.com/volcao/p/9120096.html
Copyright © 2011-2022 走看看