zoukankan      html  css  js  c++  java
  • 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
    

      

            

  • 相关阅读:
    ios UIWebView截获html并修改便签内容(转载)
    IOS获取系统时间 NSDate
    ios 把毫秒值转换成日期 NSDate
    iOS  如何判断当前网络连接状态  网络是否正常  网络是否可用
    IOS开发 xcode报错之has been modified since the precompiled header was built
    iOS系统下 的手机屏幕尺寸 分辨率 及系统版本 总结
    iOS 切图使用 分辨率 使用 相关总结
    整合最优雅SSM框架:SpringMVC + Spring + MyBatis 基础
    Java面试之PO,VO,TO,QO,BO
    Notes模板说明
  • 原文地址:https://www.cnblogs.com/wangtaobiu/p/9890088.html
Copyright © 2011-2022 走看看