• python(动态传参、命名空间、函数嵌套、global和nonlocal关键字)


    一、函数的动态传参

      1.*args位置参数动态传参

    def chi(*food):
        print(food)
    chi("烧烤","火锅","虾吃虾涮","烤鱼")
    View Code

        多个位置参数传递进去,收到的内容是元组tuple,动态参数的位置必须要在位置参数后面

      2**kwargs 关键字参数动态传参

    def chi(**food):
        print(food)
    chi(zhangqing="吃点好的",lianda="吃不辣的",徐建="方便面")
    #{'zhangqing': '吃点好的', 'lianda': '吃不辣的', '徐建': '方便面'}
    #输出结果是以字典的形式
    View Code

      顺序:位置参数、*args、默认值、**kwargs

      def func(*args,**kwargs):   这个样式的函数比较强大,能满足的需求很多。

        pass

      形参的位置*,**:聚合

      实参的位置*,**:打散

        位置参数的动态传参:把list、tuple、set、str 进行迭代打散

        关键字动态传参: 打散成字典

    二、命名空间

      1.内置命名空间:存放在python解释器为我们提供名字的如list、tuple、str等这些都是内置命名空间。

      2.全局命名空间:我们在py文件中,函数外生命的变量都属于全局命名空间。

      3.局部命名空间:在函数中生命的变量会放在局部命名空间。

      作用域:

        1.全局作用域:内置+全局

        2.局部作用域:局部(函数被调用)

      globals() 查看全局中的内容

      locals() 查看当前作用域中的内容

    三、函数嵌套

      *只要遇见了()就是函数的调用,如果没有()就不是函数的调用。

      *函数可以互相的嵌套,无限的嵌套。

    四、global和nonlocal关键字

      global:在局部访问全局中的内容

    a = 100 
    def func():    
        global a    # 加了了个global表示不不再局部创建这个变量量了了. ⽽而是直    接使⽤用全局的a    
        a = 28    
        print(a)
    func() 
    print(a)    
    #global表⽰示. 不再使⽤用局部作⽤用域中的内容了了. ⽽而改⽤用全局作⽤用域中的变量量
    View Code

      nonlocal:在局部寻找外层函数中离他最近的那个变量,但是不会到全局中寻找。

    a = 10 
    def func1():    
        a = 20    
        def func2():
            nonlocal a        
            a = 30        
            print(a)    
        func2()    
        print(a)
    func1() 
    结果: 
    加了nonlocal 
    30 
    30 
    不不加nonlocal 
    30 
    20    
    View Code
  • 相关阅读:
    Java学习笔记七:Java的流程控制语句之switch
    Java学习笔记六:Java的流程控制语句之if语句
    Java学习笔记五:Java中常用的运算符
    如何在linux下使用git管理上传代码&误删文件修复
    pwnable.tw applestore 分析
    pwnable.tw dubblesort 分析
    word中如何只修改英文的颜色
    word中图片遮挡文字怎么办
    angr进阶(6)绕过反调试
    angr进阶(5)内存操作
  • 原文地址:https://www.cnblogs.com/qq849784670/p/9449424.html
Copyright © 2020-2023  润新知