Python中函数的参数传递与可变长参数介绍

 更新时间:2015年06月30日 11:09:15   投稿:junjie  
这篇文章主要介绍了Python中函数的参数传递与可变长参数介绍,本文分别给出多个代码实例来讲解多种多样的函数参数,需要的朋友可以参考下

1.Python中也有像C++一样的默认缺省函数

复制代码 代码如下:

def foo(text,num=0):
    print text,num

foo("asd")  #asd 0
foo("def",100)  #def 100

定义有默认参数的函数时,这些默认值参数 位置必须都在非默认值参数后面。

调用时提供默认值参数值时,使用提供的值,否则使用默认值。

2.Python可以根据参数名传参数

复制代码 代码如下:

def foo(ip,port):
    print "%s:%d" % (ip,port)

foo("192.168.1.0",3306) #192.168.1.0:3306
foo(port=8080,ip="127.0.0.1")   #127.0.0.1:8080


第4行,没有指定参数名,按照顺序传参数。

第5行,指定参数名,可以按照参数名称传参数。

3.可变长度参数

复制代码 代码如下:

#coding:utf-8       #设置python文件的编码为utf-8,这样就可以写入中文注释
def foo(arg1,*tupleArg,**dictArg):
    print "arg1=",arg1  #formal_args
    print "tupleArg=",tupleArg  #()
    print "dictArg=",dictArg    #[]
foo("formal_args")

上面函数中的参数,tupleArg前面“*”表示这个参数是一个元组参数,从程序的输出可以看出,默认值为();dicrtArg前面有“**”表示这个字典参数(键值对参数)。可以把tupleArg、dictArg看成两个默认参数。多余的非关键字参数,函数调用时被放在元组参数tupleArg中;多余的关键字参数,函数调用时被放字典参数dictArg中。

下面是可变长参数的一些用法:

复制代码 代码如下:

#coding:utf-8       #设置python文件的编码为utf-8,这样就可以写入中文注释
def foo(arg1,arg2="OK",*tupleArg,**dictArg):
    print "arg1=",arg1
    print "arg2=",arg2
    for i,element in enumerate(tupleArg):
        print "tupleArg %d-->%s" % (i,str(element))
    for  key in dictArg:
        print "dictArg %s-->%s" %(key,dictArg[key])

myList=["my1","my2"]
myDict={"name":"Tom","age":22}
foo("formal_args",arg2="argSecond",a=1)
print "*"*40
foo(123,myList,myDict)
print "*"*40
foo(123,rt=123,*myList,**myDict)

输出为:

从上面的程序可以看出:

(1)如代码第16行。

   参数中如果使用“*”元组参数或者“**”字典参数,这两种参数应该放在参数列表最后。并且“*”元组参数位于“**”字典参数之前。

   关键字参数rt=123,因为函数foo(arg1,arg2="OK",*tupleArg,**dictArg)中没有rt参数,所以最后也归到字典参数中。

(2)如代码第14行。

  元组对象前面如果不带“*”、字典对象如果前面不带“**”,则作为普通的对象传递参数。

  多余的普通参数,在foo(123,myList,myDict)中,123赋给参数arg1,myList赋给参数arg2,多余的参数myDict默认为元组赋给myList。

相关文章

  • 使用wxPython创建一个文件夹结构生成器

    使用wxPython创建一个文件夹结构生成器

    这篇文章主要为大家详细介绍了如何利用 wxPython 来创建一个文件夹结构生成器,帮助大家自动化地创建文件夹和文件结构,有需要的可以了解下
    2024-11-11
  • Python如何使用PIL Image制作GIF图片

    Python如何使用PIL Image制作GIF图片

    这篇文章主要介绍了Python如何使用PIL Image制作GIF图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Python学习之不同数据类型间的转换总结

    Python学习之不同数据类型间的转换总结

    类型转换,就是将自身的数据类型变成新的数据类型,并拥有新的数据类型的所有功能的过程。本文将详细为大家介绍如何在Python中实现不同数据类型的转换,感兴趣的可以了解一下
    2022-03-03
  • python 中pass和match使用方法

    python 中pass和match使用方法

    这篇文章主要介绍了python中pass和match使用方法,​pass​​ 语句不执行任何操作。语法上需要一个语句,但程序不实际执行任何动作时,可以使用该语句
    2022-08-08
  • python jenkins 打包构建代码的示例代码

    python jenkins 打包构建代码的示例代码

    这篇文章主要介绍了python jenkins 打包构建代码的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • python tkinter 获得按钮的文本值

    python tkinter 获得按钮的文本值

    这篇文章主要介绍了python tkinter 获得按钮的文本值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python实现求解斐波那契第n项的解法(包括矩阵乘法+快速幂)

    Python实现求解斐波那契第n项的解法(包括矩阵乘法+快速幂)

    这篇文章主要介绍怎么使用Python求解斐波那契第n项,方法多样,逻辑清晰,代码简单详细,有这方面需要的朋友可以参考下
    2021-04-04
  • 解决Python报错:ValueError:operands could not be broadcast together with shapes

    解决Python报错:ValueError:operands could not be broadcast t

    这篇文章主要给大家介绍了关于解决Python报错:ValueError:operands could not be broadcast together with shapes的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • Django 5种类型Session使用方法解析

    Django 5种类型Session使用方法解析

    这篇文章主要介绍了Django 5种类型Session使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Python利用雪花算法实现生成唯一ID

    Python利用雪花算法实现生成唯一ID

    雪花算法是在一个项目体系中生成全局唯一ID标识的一种方式,偶然间看到了Python使用雪花算法不尽感叹真的是太便捷了。本文就来聊聊这具体的实现方法,感兴趣的可以了解一下
    2022-11-11

最新评论