zoukankan      html  css  js  c++  java
  • Python的特有的参数传递(*和**)

    python的传递方式具有两种值传递和引用传递。除此之外,python中还允许包裹方式的参数传递,这未不确定参数个数和参数类型的函数调用提供了基础:

    值传递

    • int、float等值传递
      **特点,区别于C语言参数需要一一对应
      #eg1:
      def f(a,b,c):
          print(a,b,c)
          return
      f(1,2,3)
      f(b=1,a=2,c=3)
      
      上面代码的运行结果是:
      1 2 3
      2 1 3

    引用传递

    • 以字典、列表等非值对象数据类型为代表
    • def f(*a,**b)
      *所对应的形参(如上面的a)会被解释为一个元组(tuple,而**所对应的形参(如上面的b)会被解释为一个字典。
      #eg2:
      def f(*a,**b):
          print(a)
          print(b)
      
      a=8
      b=4
      f(a,b,m=1,n=2)
      
      上面代码的运行结果是:
      (8 4)
      {'m': 1, 'n': 2}

    可见,对于不使用关键字传递的变量,会被作为元组的一部分传递给*a,而使用关键字传递的变量作为字典的一部分传递给了**b。

    python中规定非关键字传递的变量必须写在关键字传递变量的前面,所以混合使用*和**时肯定时*形参在**形参的前面,如def f(*a,**b);

  • 相关阅读:
    每日博客
    每日博客
    每日博客
    每日博客
    每日博客
    每日博客
    每日博客
    每日博客
    centos7 systemctl 管理MySQL
    Postgresqlz之迁移数据pg_dump
  • 原文地址:https://www.cnblogs.com/yanshanbei/p/11592208.html
Copyright © 2011-2022 走看看