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

    1. 动态参数
      位置参数的动态参数: *args

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

        顺序: 位置参数, 动态参数*, 默认值参数

          例子:   

        def chi(a, b, *food, c="娃哈哈"):
          print(a, b, food, c)
        chi("香蕉", "菠萝") # 香蕉 菠萝 () 娃哈哈 默认值⽣生效
        chi("香蕉", "菠萝", "葫芦娃") # 香蕉 菠萝 ('葫芦娃',) 娃哈哈 默认值⽣生效
        chi("香蕉", "菠萝", "葫芦娃", "口罩") # 香蕉 菠萝 ('葫芦娃', '口罩') 娃哈哈 默认值生效

         注意: 这个时候我们发现所有的默认值都生效了. 这个时候如果不给出关键字传参. 那么你的默认值是永远都生效的.

      关键字参数的动态参数 : **kwargs
      顺序:
      位置 > *args>默认值 > **kwargs

        如果想接收所有的参数:
        def func(*args, **kwargs):
          print(args, kwargs)
        func("麻花藤","马晕",wtf="胡辣汤")

        动态参数的另一种传参方式:
        def fun(*args):
          print(args)
        lst = [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)

      函数的注释:
      def chi(food, drink):
        """
        这里是函数的注释, 先写一下当前这个函数是干什么的, 比如我这个函数就是一个吃
        :param food: 参数food是什么意思
        :param drink: 参数drink是什么意思
        :return: 返回的是什么东西
        """
        print(food, drink)
        return "very good"

    2. 命名空间和作用域
    命名空间:
      1. 内置命名空间: python解释内部运行时的变量函数
      2. 全局命名空间: 我们在py文件中直接声明出来的变量,函数
      3. 局部命名空间: 在函数内部声明的变量和函数.(我们直接在py文件中, 函数外声明的变量量都属于全局命名空间)
    作用域:
      1.全局作用域:内置+全局
      2.局部作用域:局部
        globals() 查看全局作用域中的名字
        locals() 查看当前作用域中的名字

      3. global和nonlocal
      global: 把全局变量拿到局部来用.
      nonlocal: 把离他最近的一层的变量拿过来.不会找全局

  • 相关阅读:
    在不是modelAttribute的情况下,如何保存页面输入值的方法(多行遍历)
    关于Hibernate中No row with the given identifier exists问题的原因及解决
    Oracle中exit,return,continue
    如何将表的行数赋值给变量(MySQL)
    论MySQL中如何代替Oracle中select into new_table from old_table
    有关linux下redis overcommit_memory的问题,有需要的朋友可以参考下。
    CentOS 6.6 中 mysql_5.6 主从数据库配置
    CentOS 6.6 中jdk1.6的安装和配置方法
    解决 Amoeba连接mysql出错 解决方案
    Linux系统memcached安装
  • 原文地址:https://www.cnblogs.com/hfbk/p/9305183.html
Copyright © 2011-2022 走看看