zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    【Vue】状态管理
    【Vue】路由
    【Vue】组件
    【Vue】基础(数据 & 计算属性 & 方法)
    【Vue】基础(虚拟DOM & 响应式原理)
    【Vue】基础(生命周期 & 常用指令)
    【Vue】搭建开发环境
    【Mongodb】事务
    【Mongodb】视图 && 索引
    【Mongodb】聚合查询 && 固定集合
  • 原文地址:https://www.cnblogs.com/YZL2333/p/10257075.html
Copyright © 2011-2022 走看看