• python 函数的进阶


    一.函数参数补充

      动态参数:

        动态位置参数     *args  #动态位置参数获取的是一个元组(万能传参),*号后边的字母可以自己定义,通常会用                                             args.

        动态关键字参数   **kwargs  #动态关键字传参或取到的是一个字典形式

      参数位置:

        位置参数 > 动态位置参数 > 默认(关键字)参数 >动态关键字参数

    二.名称空间

      1.名称空间划分:局部命名空间

             全局命名空间

             内置命名空间

      2.加载顺序:内置 > 全局 > 局部

       取值顺序:局部 > 全局 > 内置

      3.作用域:

        全局作用域:  内置 + 全局

        局部作用域:  函数局部

      4.#print(globals())     #查看全局作用域中的变量和函数名

       #print(lovals())      #产看局部作用域中的变量和函数名

    三.函数的嵌套: 

    def f():
        print(11)
        def f1():
            print(22)
            def f2():
                print(33)             **********重要
            f2()
    
        f1()
    f()

      函数的注释:更方便地明确函数的作用

    def func():
        #     '''
        #     这是打印的函数
        #     :param a: 没啥用1
        #     :param b: 没啥用1
        #     :param c: 没啥用1
        #     :param d: 没啥用1
        #     :return:  返回的None
        #     '''
        #     print(a,b,c,d)
    

      global:可变数据类型在函数中可以直接进行操作,不可变数据类型需要使用global才能操作

          注意:可变数据类型在函数中进行操作不会改变数据的ID,但通过global改变的数据,只是开辟了新的内存地址重新赋值给变量.

    a = 12
    print(id(a))      #1954966896
    def func():
        a = 15      # 在函数的局部中
        print(a)    # 使用的是局部   a = 15
        print(id(a))   #1954966992
    func()
    

      nonlocal:改变最近的父级变量,如果上级没有能改变的就继续向上走,直到最外层函数就停止,注意不能改变全局变量.

    a = 1           #全局
    def fun_1():    #全局
        a = 2           # fun_1 的局部变量
        def fun_2():    # fun_1  下定义了fun_2
            nonlocal a  # 申明更改父级的变量值
            a = 3       # 更改
            def fun_3(): # 定义fun_3
                a = 4    # 定义fun_3的局部变量
                print(a) #  4
            print(a)     # 3 fun_2
            fun_3()      # 调用函数
            print(a)     # 3/4
        print(a)    # 2 打印的是 fun_1的局部变量
        fun_2()     # 调用函数
        print(a)    # 3
    print(a)       # 1 打印的全局的
    fun_1()        # 调用函数
    print(a)       # 1
    

      

            

  • 相关阅读:
    软工实践个人总结
    第03组 每周小结 (3/3)
    第03组 每周小结 (2/3)
    第03组 Beta冲刺 总结
    第03组 Beta冲刺 (5/5)
    第03组 Beta冲刺 (4/5)
    第03组 Beta冲刺 (3/5)
    第03组 Beta冲刺 (2/5)
    第03组 Beta冲刺 (1/5)
    Alpha冲刺 总结
  • 原文地址:https://www.cnblogs.com/wangtaobiu/p/9890088.html
Copyright © 2020-2023  润新知