• 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()
    
    
    #通过方返回闭包函数的函数名
  • 相关阅读:
    ionic3开发环境搭建与配置(win10系统)
    angular4打包以后,刷新报404
    css3文字渐变无效果的解决方案
    node-sass安装失败的解决方案
    python logging 重复写日志问题
    进程和线程的概念
    软件开发目录规范
    相对导入
    python引入导入自定义模块和外部文件
    异常处理
  • 原文地址:https://www.cnblogs.com/baobaoran/p/9671795.html
Copyright © 2020-2023  润新知