• Python函数进阶


    def eat(a,b,v,f,g):
    print(a,b,v,f,g)

    eat('方便面','包子','麻团','豆浆','咸菜')

    def eat(a,b,*args): # 聚合 打包  
    print(a,b,args) # 元祖
    # 形参位置  : 位置参数 > 动态位置参数
    eat('方便面','包子','麻团','豆浆','咸菜','油条','火鸡面','小笼包','炒饼')

    def eat(b=1,**kwargs): # b=1 b ='2'
    print(kwargs) # {'a': '1', 'c': '4', 'd': '5', 'f': '22'}
    # print(kwargs['b']) #keyError
    print(b)
    eat(a='1',b='2',c='4',d='5',f='22')

    动态关键字参数 默认参数 > 动态默认参数


    def func(a,b,*args): # 聚合
    print(a,b,*args) # 打散

    func(1,2,3,4,5,6)

    def func(a=1,b=2,**kwargs): # 默认参数** 聚合
    print(a,b,kwargs)

    func(a=56,c=22,b=444,d=66)


    def func(a,b,c=1,*args,**kwargs): 错误的示范
    print(a,b,c,args,kwargs)

    func(1,2,3,4,5,6,7,8,d=1,f=3)

    def func(a,b,*args,c=1,**kwargs): # 位置 > 动态位置 > 默认参数 > 动态默认参数
    print(a,b,c,args,kwargs)

    func(1,2,3,4,5,6,7,8,c=55,d=1,f=3)

    def func(*args,**kwargs): #万能 无敌
    print(args,kwargs)

    func(1,2,3,4,a=1,b=2,c=3) # 位置 关键字 混合

    lst =[1,2,3,5,4]
    def func(*args): # 聚合

    print(*args) #打散
    func(*lst) # 打散 去壳
    dic= {'1':22,'2':55}

    def func(**kwargs): #聚合
    print(kwargs)
    func(**dic) #打散 1 = '22' ,'2' = 55

    函数的注释

    def func(a,**kwargs):
    '''
    :param a: 年龄
    :param kwargs: 万能的默认参数
    :return: 返回值
    '''
    # print(args)
    # print(kwargs)
    # return args
    # print(func.__doc__) #查看函数的注释 函数名.__doc__

    函数的名称空间
    内置空间
    全局空间
    局部空间

    Python关键字是存在内置空间的
    py文件中顶头写的内容就存在全局空间
     函数内写的变量存在局部空间

    a = 1
    b = 2

    def func():
    print(1)

    a = 10
    def func():
    a = 1 # 局部空间
    print(a)
    func()

    def func1():
    print(a) # 局部空间不是共享的
    func1()

    找值顺序: 局部空间 > 全局空间 > 内置空间
    加载顺序: 内置空间 > 全局空间 > 局部空间

    作用域命名空间:

    内置空间 + 全局空间 == 全局 globals()
    局部空间 locals()

    函数的嵌套:

    def func():
    print(1)

    func()

    func()

    def func():
    print(1)


    def func():
    func1()
    print(1)

    def func2():
    print(33)
    func()

    def func1():
    print(2)

    func2()

    def func():
    print(1)
    def func1():
    print(2)
    func3()
    def func2():
    print(5)
    def func3():
    print(4)
    func2() #飘红不代表报错
    func1()
    func()

    def fun1():
    print(1)
    def fun2():
    print(2)
    def fun3():
    print(3)
    def fun6():
    print(6)
    fun3()
    def fun4():
    print(4)
    def fun7():
    print(7)
    fun7()
    def fun5():
    print(5)
    fun5()
    fun4()
    fun6()
    fun2()
    fun1()

    globals()
    locals()

    a = 10
    def func():
    a = 20
    def func1():
    pass
    print(a)
    # print(globals()) #查看全局作用域 内容的
    # print(locals()) # 查看局部作用域 内容的
    func()


    global 全局
    nonlocal

    a = 10 #
    def func():
    global c # 申明我要修改全局的变量a的值
    b = 100
    print(b) #100
    print(locals()) # {} 存放我局部作用域里的一个容器 {'b':100}
    func()
    print(a) #10

    a = 11
    def func():
    def fun1():
    def func2():
    global a
    a =100
    print(a)
    fun1()
    func()
    print(a)


    n = 1
    def func():
    n = 10
    def func2():
    def func1():
    nonlocal n #修改 离得 最近 上一次 里的变量值,
    # 上一次没有就继续往上找,找到全局最外层局部
    n = 100
    print(n) # 10
    func1()
    func2()
    func()
    print(n)


    b = 10
    def func():
    b = 100
    print(b)
    def func1():
    print(b) # 100
    def func2():
    print(b) # 100
    def func3():
    nonlocal b
    b = 5
    print(b) # 5
    func3()
    print(b) # 5
    func2()
    print(b) # 5
    func1()
    print(b) # 5
    func()
    print(b) # 10
  • 相关阅读:
    css 权威指南笔记
    angular directive restrict 的用法
    vim 的寄存器
    以普通用户启动的Vim如何保存需要root权限的文件
    jshint options
    如何在Ubuntu Linux上安装Oracle Java
    Linux:使用nohup让进程在后台可靠运行
    反射-----学习Spring必学的Java基础知识之一
    java异常捕获
    cookie
  • 原文地址:https://www.cnblogs.com/YZL2333/p/10257075.html
Copyright © 2020-2023  润新知