zoukankan      html  css  js  c++  java
  • Python自学笔记(13day)

    (1)函数的嵌套

      (1)首先明白三点:调用函数意思就是:调用函数所得到的结果是什么。     函数没有被调用,则函数里面代码永远不会被执行。   调用函数只有拿到返回值才有结果

    def func():
        def su():
            print("shuai")
    func()
    
    
    #输出:啥都没有因为su()没有被调用
    def func():
        def su():
            print("shuai")
         su()
    
    
    func()
    
    
    #输出:shaui 
               none
    因位执行到su()打印出shuai就结束了,函数func()没有拿到返回值。
    def func():
        def su():
            print("shuai")
            return shuai
        su()
    
    
    func()
    
    
    #输出:shuai
               shuai
    因位执行到su()打印出shuai就结束了,函数func()也拿到返回值。

     (2)函数的多层嵌套

    def  inner   ():
        a=1
        def inner1():
            b=2
            print(a)
            print("inner")
            def inner2():
                print(a)
            inner2()
    inner()

    总结:(1)全局变量不能用局部变量,局部变量看可以用全局变量,但是不可对全局变量中的不可变数据类型进行修改(即对其加减乘除),如果想要修改用gloabl(),它声明的是去全局变量。

        (2)同理,内部函数可以用外函数中的变量,但是不可对其修改,如想修改用nonlocal(),它声明的是距离它最近的上一层函数中的局部变量。

    def  inner   ():
        a=1
        def inner1():
            b=2
            nonlocal a           #声名a
            a+=1
            print(a)
            print("inner")
            def inner2():
                print(a)
            inner2()
    inner()        

    (3)函数的本质

    函数之所以能被调用,比如func()就可以调用函数,是因为:func()=func+()=函数名地址+()=调用

    (1)函数名字是可以被赋值的

    (2)函数名字可以作为容器类型的元素

    (3)函数名字可以作为函数的参数

    (4)函数名字可以作为函数的返回值

    举列子针对(4)

    def func():
        print(123)
    def wawa(f):
        f()
        return f
    
    xing=wawa(func)
    xing()
    
    
    #输出:123
    123

    函数的闭包

    (1)闭包:嵌套函数,且内部函数调用了外部函数的变量

    def outer():
        a=1
        def inner():
            print(a)
        print(inner.__closure__)   #inner.__closure__:用来打印看函数是否为闭包函数
    
    outer()

    (2)闭包函数的调用

    一般来说我们调用闭包函数,是直接调用闭包函数,而不必通过调用总的函数。

    def outer():
        a=1
        def inner():
            print(a)
        return inner
    
    
    inn=outer()
    inn()
    
    
    #通过方返回闭包函数的函数名
  • 相关阅读:
    需求征集系统第四天
    EL表达式和JSTL
    需求征集系统第三天
    [2019.1.6]BZOJ4197 [Noi2015]寿司晚宴
    [2019.1.7]BZOJ1011 [HNOI2008]遥远的行星
    [2019.1.3]BZOJ4326 NOIP2015 运输计划
    [2019.1.2]BZOJ2115 [Wc2011] Xor
    [2019.1.2]BZOJ2460 [BeiJing2011]元素
    [2019.1.1]BZOJ1806 [Ioi2007]Miners 矿工配餐
    [2019.1.1]BZOJ4195 [Noi2015]程序自动分析
  • 原文地址:https://www.cnblogs.com/baobaoran/p/9671795.html
Copyright © 2011-2022 走看看