zoukankan      html  css  js  c++  java
  • python 动态传参,名称空间和作用域,函数的嵌套,global和nonlocal

    一、动态传参

      1.位置参数动态传参

      def func(*args):    *表示动态传参

      * 在这里表示接受位置参数的动态传参,接收到的是元组。

    def fun(*args):
        print(args)
        
    fun('aaa',3,5,6,'ccc')
    #  结果('aaa', 3, 5, 6, 'ccc')
    

      

      2.关键字的动态传参

      def func(**kwargs):    

        函数体(代码块)

      func(n=7,m="aa"):

      **表示接收关键字参数的动态传参,接收到的是字典。

    def fun(**kwargs):
        print(kwargs)
    
    fun(name="Tom",age="男",hobby="女")
    # 结果 {'name': 'Tom', 'age': '男', 'hobby': '女'}

        顺序:位置参数 => *arg(arguments)(位参动态传参)  => 默认值 => **kwargs(关键字参数)

           以上参数可以随意搭配使用

      3.函数的注释

      def  fun():

        """

        注释,说明这个函数用来干什么

        ”“”

      print(fun.__doc__)    #document文档

    def fun(a,b):
        """
        注释,说明这个函数用来干什么
        :param a:
        :param b:
        :return:
        """
        return
    fun(5,6)
    print(fun.__doc__)  #打印出函数的注释
    

      

      4.接收所有参数

      def fun(*args,**kwargs):    #无敌传参

        pass

      *,** 实参位置是打散

      *,** 形参位置是聚合

    def fun(*args,**kwargs):
        print(args,kwargs)
    li = ['r','n','g','w','i','n']
    dic = {'name': 'uzi','age':'男','hobby':'adc'}
    fun(*li,**dic)
    # 结果 ('r', 'n', 'g', 'w', 'i', 'n') {'name': 'uzi', 'age': '男', 'hobby': 'adc'}
    

      

    二、命名空间与作用域

      1.全局作用域:

        全局命名空间,内置命名空间

      2.局部作用域:

        局部命名空间

       globals() 可以查看全局作用域中的内容

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

    a = 5  # 全局变量
    def fun():
        a = 10      #局部变量
        print(locals())
    
    print(globals())
    fun()
    

      

      函数的嵌套

        函数可以相互嵌套

    a = 1
    def fun():
        a = 5        
        def inner():
            a = 10   
            print(a)
        inner()
        print(a)
    print(a)
    fun()
    

      

      global

        1.可以把全局中的内容引入到函数的内部

        2.在全局创建一个变量

        (在函数内部想改变外部的值时会引用,全局变量本身就不安全,不能随意修改)

    a = 1
    def fun():
        global a
        a += 5
        print(a)  #  6
    print(a)   #  1
    fun()
    print(a)   #  6
    

      

      nonlocal 

        寻找外层函数中离他最近的那个变量

    a = 1
    def fun():
        a = 5
        def inner():
            nonlocal a
            a += 5
            print(a)    # 10
        print(a)        # 5
        inner()
        print(a)        # 10
    
    print(a)            # 1
    fun()
    print(a)            # 1
    

      

      

  • 相关阅读:
    Python 学习 第八篇:函数2(参数、lamdba和函数属性)
    Python 学习 第七篇:函数1(定义、调用和变量的作用域)
    Python 学习 第六篇:迭代和解析
    Python 学习 第四篇:动态类型模型
    物联网环境下数据分析的应用
    Python 学习 第一篇:数据类型(数字,布尔类型,操作符)
    写于2018年底,有点丧
    云计算助力大数据分析
    python中的__init__方法
    load、loads和 dump、dumps的区别
  • 原文地址:https://www.cnblogs.com/JinMuBaoBao/p/9450659.html
Copyright © 2011-2022 走看看