zoukankan      html  css  js  c++  java
  • 函数进阶

    一,函数的参数:

      1.动态参数:

        动态位置参数:*args   

        动态默认值参数**kwargs

          注:1.动态接收参数的时候要注意: 动态参数必须在位置参数后⾯面

            2.顺序:  位置参数 >  *args > 默认值参数 > **kwargs

        动态传参的另一种传参方式:

            在实参位置上给一个序列,列表,可迭代对象前面加个*表示吧这个顺序打散.

            在形参的位置上的*表示吧接收到的参数组合成一个元组

            如果是一个字典,那么也可以打散,不过需要两个*

            def fun(*args):    print(args)

            列表

            def fun(*args):   

            print(argslst = [1, 4, 7])

            fun(lst[0], lst[1], lst[2])

            fun(*lst)   # 可以使用*把⼀一个列表按顺序打散

            s = "⾂妾做不到"

            fun(*s)     # 字符串也可以打散, (可迭代对象)

            字典

            def fun(**kwargs):   

              print(kwargs)

            dic = {'a':1, 'b':2}

            fun(**dic)

            3.函数的注释

            def chi(food, drink):

            """    这里是函数的注释 , 先写一下当前这个函数是干什么的 , 比如我这个函数就是⼀一个吃                   :param :param food: 参数 food 是什么意思   

             :param :param drink: 参数 drink 是什么意思    :

            return :return: 返回的是什么东东   

             """

            print(food, drink)   

            return "very good

    二,命名空间:

      定义:给存放名字和值的关系的空间起⼀一个名字叫: 命名空间

      1.命名空间分类:

         1. 全局命名空间--> 我们直接在py文件中, 函数外声明的变量都属于全局命名空间       

         2. 局部命名空间--> 在函数中声明的变量会放在局部命名空间       

         3. 内置命名空间--> 存放python解释器为我们提供的名字, list, tuple, str, int这些都是内 置命名空间

         加载顺序:  1. 内置命名空间>>>>2. 全局命名空间>>>>3. 局部命名空间(函数被执行的时候)

        取值顺序:  1. 局部命名空间>>>>2. 全局命名空间>>>> 3. 内置命名空间

      2.作用域:  作用域就是作用范围, 按照生效范围来看分为 全局作用域和局部作用域   

        全局作用域: 包含内置命名空间和全局命名空间. 在整个文件的任何位置都可以使用(遵循 从上到下逐行执行).

        局部作用域: 在函数内部可以使用.

        作用域命名空间:         1. 全局作用域:    全局命名空间 + 内置命名空间        2. 局部作用域:    局部命名空间  

          globals()函数来查看全局作用域中的内容, 

          locals()来查看局部作 用域中的变量和函数信息

            a = 10

            def func():   

              a = 40   

              b = 20   

              def abc():       

                print("哈哈")   

              print(a, b)     # 这里使用的是局部作用域   

              print(globals())    # 打印全局作用域中的内容   

              print(locals())     # 打印局部作用域中的内容

            func()

    三,函数的嵌套

      1,只要遇见()就表示函数的调用,如果没有()就不是函数的调用

      2.函数的执行顺序

           

     四关键字:global和nonlocal

       global表示. 不再使用局部作用域中的内容了了. 而改用全局作用域中的变量

        a=100

        def func():

          global  a

          a=28

        func()

        print(a)

        结果为28,28

        nonlocal  表示在局部作用域中,调用父级命名空间中的变量

        a=10

        def func1():

          a=20

          def func2():

            nonlocal a

            a=30

          print(a)

          func2()

          print(a)

        func1()

          结果为 :20,30

  • 相关阅读:
    IR的评价指标之MRR
    双击启动tomcat中的startup.bat闪退原因及解决方法
    裁判文书网采集说明
    Java 验证码识别之多线程打码兔
    JVM 内存分配机制总结
    Java中多态的一些简单理解
    Java Callable并发编程模板
    JVM
    Command
    解决PHP下载文件时因时文件太大而报404错误
  • 原文地址:https://www.cnblogs.com/lixin012007/p/9890488.html
Copyright © 2011-2022 走看看