zoukankan      html  css  js  c++  java
  • Python之函数(四)函数的嵌套和global、nonlocal

    函数的嵌套
    函数的嵌套

    def func()
    print(1)
    def f1():
    print(2)
    return f1()
    func()
    结果为:1 2
    不管在什么位置,只要是函数+()就是在调用此函数
    函数调用执行后,函数体中开辟的空间就自动销毁了
    def func():
    a=1
    def foo():
    b=2
    print(b)
    print(a)
    def f1():
    print(b)
    return f1()
    return foo()
    print(func())
    结果为:2 1 2 None
    print(func()) 输出func()的返回值
    如果 函数里没有此变量 就找上面那一层(即父子层)

    函数的相互引用

    def func():
    a=1
    foo():
    print(a)
    def foo():
    b=2
    print(b)
    func()
    结果为:2 1

    def a():
    a1=1
    c()
    print(c)
    def b():
    b1=2
    print(b1)
    def c():
    c1=3
    print(a)
    def run():
    a()
    print(run())
    结果为:
    <function a at 0x0000024CE8801E18>
    <function c at 0x0000024CE89DA950>
    None

    def func():
    a=1
    def b():
    print(a)
    def foo():
    b=1
    def z():
    print(func)
    print(b)
    ret=z()
    func()
    return ret
    def run()
    foo()
    print(run())
    结果为:
    <function func at 0x00000242CF281E18>
    1
    None

    def func(a):
    foo(a)
    def foo(e):
    b(e)
    def b(c):
    print(c)
    return 10
    print(func(5))
    结果为:
    5
    None
    4.5 global 及 nonlocal
    global(声明修改全局变量的值)

    a=10
    def func():
    global a # 声明修改全局变量的值
    a += 1
    print(a)
    func()
    print(a)
    结果为: 11 11

    a = 10
    def f1():
    a = 10
    def f2():
    a = 15
    def f3():
    global a
    a += 1
    print(a) # 11
    print(a) # 15
    f3()
    print(a) # 10
    f2()
    f1()
    结果为:10 15 11

    a=10
    def func():
    def f1():
    a=15
    def foo():
    nonlocal a
    a+=1
    print(a)
    foo()
    print(a)
    f1()
    func()
    print(a)
    结果为:16 16 10

    总结:

    global:修改全局空间的变量对应的值

    nonlobal:在外层的函数中,修改局部空间的变量值,完全不涉及全局变量

    nonlobal只修改离它最近的一层,最近的一层没有变量继续向上找,直到找到最外层函数

  • 相关阅读:
    Oracle学习笔记(一)——B-Tree索引
    B+树索引
    B树和B+树原理及在索引中的应用
    B树索引
    MySQL用B+树(而不是B树)做索引的原因
    细说mysql索引
    How to write XML-RPC clients
    How to write XML-RPC clients
    渲染流程(下):HTML、CSS和JavaScript是如何变成页面的
    渲染流程(上):HTML、CSS和JavaScript是如何变成页面的
  • 原文地址:https://www.cnblogs.com/yhx003/p/11438548.html
Copyright © 2011-2022 走看看