zoukankan      html  css  js  c++  java
  • python全栈day10

    01 形参 动态参数

    1.目的:

      函数为了拓展,对于传入的实参数量不固定,我们需要一个万能参数,可以收纳所有传入的数据。


    2.形式:

    • 在函数定义时,在位置函数前加一个'*',含义是聚合或者打散。
    • *args将所有的实参的位置参数聚合到一个元组,并将这个元组赋值给args
    • **kwargs将所有的实参的关键字参数聚合到一个字典,并将这个字典赋值给kwargs

      打散的魔性用法例题:

    l1 = [1,2,3]
    l2 = [111,22,33]
    def fun1(*args)
      print(args)
    func1(*l1,*l2)
    #打散后得到的结果是
    (1,2,3,111,22,33)
    
    def func1(**kwargs):
        print(kwargs)
    dic = {'name':'alex'}
    dic1 = {'age':1000}
    func1(**dic,**dic1)
    #打散得到的结果
    {'name':'alex','age':1000}
    

     

    3.形参顺序

    •  位置参数>*args>默认参数>**kwargs

    02 作用域,名称空间,取值顺序等


    1.名称空间

      作用:存储的是变量名对应值的内存空间的对应关系
      分类:
        1)内置名称空间
        2)全局名称空间
        3)局部名称空间

    2.作用域

      作用域分类:
        1)全局作用域,包含全局名称空间和内置名称空间
        2)局部作用域包含局部名称空间。


    3.取值顺序

      满足就近原则
      先局部名称空间找,没有就去全局名称空间找,再没有就去内置名称空间找。也没有,则报错。
      顺序:局部>全局>内置,单项从小到大。


    4.加载顺序

      内置名称空间最先加载,全局名称空间其次(在程序执行时),最后局部名称空间(函数调用时)

      顺序:内置名称空间 先于 全局名称空间 先于 局部名称空间

     

    03 函数的嵌套
    04 global nonlocal

    #例题:
    count = 1
    def func1():
        count = count + 1
        print(count)
    func1()
    #注意:在局部名称空间,对一个变量进行修改,那么解释器会认为该变量在局部已经定义
    #而上述的例题,局部没有定义count,所以会报错。
    

     

    1.global
      作用:
        1)在局部名称空间声明一个全局变量。

    #例题:
    def func2():
        name = 'alex'
    func2()
    print(name)
    #输出:报错
    #原因:name为局部变量在函数执行完毕后内存空间释放
    #     报错没有定义
    

      

    def func2():
        global name
        name = 'alex'
    func2()
    print(name)
    #输出:alex
    #原因:global函数会保留name的内存空间在内存中,
    #不会因为函数结束而释放
    

     

    2)局部名称空间可以对全局变量进行修改
    例题:

    count = 1
    def func1():
        global count
        count = count + 1
        print(count)
    func1()
    #输出结果:2
    #在函数内更改了全局变量count的值
    

      

      实际应用:
        对全局变量进行修改

    2.nonlocal

    例题:

    def func1():
        count = 666
      def func2():
          count += 1
          print(count)
    func2()
    func1()
    #输出:报错,内部名称空间不能对外部名称空间的变量进行修改,只能引用。
    

     

      作用:
      子函数对父函数的变量进行修改。
      注意:此变量不能是全局变量

  • 相关阅读:
    Scala与Mongodb实践1-----mongodbCRUD
    Scala实践14
    Scala实践13
    Scala实践12
    Scala实践11
    Scala实践10
    Scala实践9
    Scala实践6
    Scala实践8
    Oracle Object Type
  • 原文地址:https://www.cnblogs.com/abner28/p/9486939.html
Copyright © 2011-2022 走看看