zoukankan      html  css  js  c++  java
  • 理解Python中的*,*args

    1、*在函数调用中的作用

    首先定义一个函数,并调用

    def fun(a, b, c):
        print a, b, c
    fun(1,2,3)

    则该函数的输出为

    1 2 3

    传递3个参数调用该函数,则该函数会打印出这三个参数

    接下来,创建一个3个元素的列表,并使用*进行调用

    l = [1,2,3]
    fun(*l)

    则输出同样为

    1 2 3

    在这里*号的作用是,将l中的的值进行了unpack,并作为相应位置的参数传递进fun函数中。

    如果使用如下代码:

    l=[3,5,6,9]
    fun(*l)

    则会因为函数数量问题产生错误:

    TypeError                                 Traceback (most recent call last)
    
    xxxx in <module>()
    
    TypeError: fun() takes exactly 3 arguments (4 given)

    2、*args在函数调用中的作用

    现在改变函数的定义,并进行调用

    def fun(*args):
        print args
    fun(1)

    则输出为

    (1,)

    或者使用任意多个参数进行调用,例如

    fun(1,2,3)

    这样的话,输出就是(1, 2, 3)

    *args在函数定义中的作用是

    接收所有形参后面的定位参数(positional arguments),并存储至一个元组中。所以args将会是一个元组。

    如果将*args与形参进行混合,例如

    def fun(a, *args):
        print "a is ", a
        print "args is ", args
    fun(1, 2, 3, 4)

    则调用后的输出为

    a is  1
    args is  (2, 3, 4)

    我们可以看到,a被第一个位置的参数赋值为1,args接收了包含所有其他参数的tuple。

  • 相关阅读:
    stm32学习(一)
    linux驱动之ioctl
    request_threaded_irq()参数
    驱动初步学习
    linux命令操作
    Shell
    进程模块管理
    bash及正规表示法
    python脚本
    Python系统模块os
  • 原文地址:https://www.cnblogs.com/ruizhang3/p/6755129.html
Copyright © 2011-2022 走看看