• Python day8


    #三元运算
    # a = 20
    # b = 10
    # if a > b:
    #     c = 5
    # else:
    #     c = 10
    
    #if条件成立的结果 if 条件 else else条件成立的结果
    # a = 20
    # b = 10
    # c = 5 if a>b else 10
    # print(c)
    
    #命名空间
    #局部命名空间
    #全局命名空间
    #内置命名空间
    def my_max(a,b):
        c = a if a > b else b
        return c
    
    m = my_max(5,8)
    
    #加载顺序  硬盘上——内存里
    #内置-->全局(从上到下顺序加载进来的)-->局部(调用的时候加载)
    
    a = 5
    b = 8
    def my_max():
        c = a if a > b else b
        return c
    
    # m = my_max()
    # print(m)
    
    #作用域
    #命名空间+作用域是分不开的
    #两种
    #全局作用域:全局命名空间、内置命名空间
    #局部作用域:局部命名空间
    def func():
        return max(1,2,3)
    # print(func())
    
    def max(a,b,c):
        return 2
    # print(max(1,2,3))
    
    #站在全局看:
    #使用名字:
    # 如果全局有:用全局的
    # 如果全局没有:用内置的
    
    #为什么要有作用域的概念:
    #为了函数内的变量不会影响到全局
    # def max():
    #     a = 10
    #     b = 20
    #
    # a = 2
    # b = 3
    # my_max(30,50)
    #函数的嵌套调用
    def f1():
        print('f1')
    
    def f2():
        a = 10
        f1()
    
    #函数的嵌套
    #为了保护内部函数,确定内部函数只能在外部函数中被调用
    def animal():
        def tiger():
            print('bark')
        print('eat')
        tiger()
    # animal()
    
    #函数名的本质
    def func():
        print('func')
    print(func)
    # print(func)
    # f = func
    # print(f)
    # f()
    #
    # l = [f]
    # print(l)
    # #l[0] == f
    # l[0]()
    
    #可以用作函数的参数
    def func():
        print('func')
    
    def func2(f):
        print(f)
        f()
        print('func2')
    
    # func2(func)
    
    #可以作为函数的返回值
    def func():
        print('func')
    
    def func2(f):
        print('func2')
        return f
    
    fu = func2(func)
    # print(fu)
    # fu() #==>func()
    # print(fu)
    # print(func)
    #如果我想在全局使用内部的函数
    
    
    def func():
        print('func')
    
    # print(func)
    # f = func
    # l = [f]
    # f1 = l[0] #== f
    # print(f1)
    # print(f)
    # print(func)
    # func()
    # f()
    #f1()
    #函数名做参数
    # def func():
    #     print('func')
    # def func2(f):
    #     f()
    # func2(func)
    
    #函数的名字可以做返回值
    def func():
        def func2():
            print('hello')
        return func2
    
    # f2 = func()
    # f2()
    # f = func
    
    def heiheihei():
        ha = 10
        heng = 20
        def inner():
            print(ha)
            print(heng)
        inner()
    
    # heiheihei()
    
    #作用域:
    #小范围的可以用大范围的
    #但是大范围的不能用小范围的
    #范围从大到小(图)
    #在小范围内,如果要用一个变量,是当前这个小范围有的,就用自己的
    #如果在小范围内没有,就用上一级的,上一级没有就用上上一级的,以此类推。
    #如果都没有,报错
    
    #作用域链
    x = 1
    def heihei():
        # x = 'h'
        def inner1():
            # x = 'i1'
            def inner2():
                print(x)
            inner2()
        inner1()
    
    # heihei()
    
    #闭包函数:内部函数,包含了对外部作用域中变量的引用
    def hei():
        x = 20
        def inner():
            '''
            闭包函数
            '''
            print(x)
    
    
    #闭包
    #1.闭 内部的函数
    #2.包 包含了对外部函数作用域中变量的引用
    
    #闭包的常用形式
    def hei():
        x = 20
        def inner():
            print(x)  #局部的
        return inner
    
    # i = hei()
    # i()  #全局
    
    from urllib.request import urlopen
    # def index():
    #     url = "http://www.cnblogs.com/Eva-J/articles/7125925.html"
    #     return urlopen(url).read()
    # index()
    
    def index():
        url = "http://www.cnblogs.com/Eva-J/articles/7125925.html"
        def inner():
            return urlopen(url).read()
        print(inner.__closure__)
        return inner
    # u = "http://www.cnblogs.com/Eva-J/articles/7125925.html"
    get = index()
    print(get())
    
    
    #作用域:
    #小范围的可以用大范围的
    #但是大范围的不能用小范围的
    #范围从大到小(图)
    #在小范围内,如果要用一个变量,是当前这个小范围有的,就用自己的
    #如果在小范围内没有,就用上一级的,上一级没有就用上上一级的,以此类推。
    #如果都没有,报错
    a = 20
    b = 50
    def haha():
        x = 1
        y = 2
        print(globals())  #全局作用域中的名字
        print(locals())   #局部作用域中的名字
    
    # haha()
    # print(globals())  #全局作用域中的名字
    # print(locals())   #全局的局部还是全局
    
    
    a = 10
    def heiheihei():
        global a
        a = 20
    
    # heiheihei()
    # print(a)
    def f():
        a = 3
        def f1():
            a = 1
            def f2():
                nonlocal a
                # 1.外部必须有这个变量
                # 2.在内部函数声明nonlocal变量之前不能再出现同名变量
                # 3.内部修改这个变量如果想在外部有这个变量的第一层函数中生效
    
                a = 2
            f2()
            print('a in f1 : ', a)
        f1()
        print('a in f : ',a)
    
    f()
    # def f1(a):
    #     print(a)
    #     def f():
    #         print(11111)
    #         a = 2
    # f1(None)
    
    def f():
        a = 3
        def f1():
            a = 1
            def f2():
                nonlocal a
                a = 2
            f2()
            print('a in f1 : ', a)
        f1()
        print('a in f : ',a)
    
    f()
    print(1)
    

      

  • 相关阅读:
    五:bean
    android学习笔记1:对应用进行单元测试
    二:spring的运行原理图:
    奇偶效验码和海明码
    python3输出素数
    关于项目流程
    php操作Mysql 以及封装常用的函数 用外连接连接3个表的案例
    一些列类型还有属性
    查询五子句
    实现注册功能
  • 原文地址:https://www.cnblogs.com/jmblog/p/7241377.html
Copyright © 2020-2023  润新知