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()
    
    
    #通过方返回闭包函数的函数名
  • 相关阅读:
    《移动开发者周刊》第十一期
    2012安卓巴士开发者沙龙成都站大家抓紧报名
    23岁那年你正处在哪个状态?现在呢?
    《老罗Android开发视频教程》老罗来交国庆的答卷了
    程序员,你的一千万在哪里?
    《老罗Android开发视频教程》更新
    2012全球开发者大会项目投资一对一相亲会
    windows远程桌面
    [LeetCode] NQueens
    [LeetCode] Pascal's Triangle II
  • 原文地址:https://www.cnblogs.com/baobaoran/p/9671795.html
Copyright © 2011-2022 走看看