`

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

阅读更多

 

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

1 def foo(text,num=0):
2     print text,num
3
4 foo("asd")  #asd 0
5 foo("def",100)  #def 100

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

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

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

1 def foo(ip,port):
2     print "%s:%d" % (ip,port)
3
4 foo("192.168.1.0",3306) #192.168.1.0:3306
5 foo(port=8080,ip="127.0.0.1")   #127.0.0.1:8080

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

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

3.可变长度参数

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

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

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

复制代码

 1 #coding:utf-8       #设置python文件的编码为utf-8,这样就可以写入中文注释
 2 def foo(arg1,arg2="OK",*tupleArg,**dictArg):
 3     print "arg1=",arg1
 4     print "arg2=",arg2
 5     for i,element in enumerate(tupleArg):
 6         print "tupleArg %d-->%s" % (i,str(element))
 7     for  key in dictArg:
 8         print "dictArg %s-->%s" %(key,dictArg[key])
 9
10 myList=["my1","my2"]
11 myDict={"name":"Tom","age":22}
12 foo("formal_args",arg2="argSecond",a=1)
13 print "*"*40
14 foo(123,myList,myDict)
15 print "*"*40
16 foo(123,rt=123,*myList,**myDict)

复制代码

输出为:

从上面的程序可以看出:

(1)如代码第14行。

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

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

 

(2)如代码第16行。

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

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

 

来自 <https://www.cnblogs.com/xudong-bupt/p/3833933.html>

 

分享到:
评论

相关推荐

    Python程序设计:函数参数.pptx

    Python的函数使用非常灵活,除了正常定义的必选参数外,还可以使用关键字参数、默认参数、可变参数,使函数通过定义出来的接口,通过参数设置,简化调用者的代码。 必须参数,即函数调用时必须要传的参数,下面进行...

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

    1.Python中也有像C++一样的默认缺省函数 复制代码 代码如下: def foo(text,num=0):  print text,num foo(“asd”) #asd 0 foo(“def”,100) #def 100 定义有默认参数的函数时,这些默认值参数 位置必须都在非...

    详解Python函数可变参数定义及其参数传递方式

    Python函数可变参数定义及其参数传递方式详解 python中 函数不定参数的定义形式如下 1、 func(*args)  传入的参数为以元组形式存在args中,如: def func(*args): print args &gt;&gt;&gt; func(1,2,3) (1, 2, 3) &gt;&gt;...

    Python函数可变参数定义及其参数传递方式实例详解

    本文实例讲述了Python函数可变参数定义及其参数传递方式。分享给大家供大家参考。具体分析如下: python中 函数不定参数的定义形式如下: 1、func(*args) 传入的参数为以元组形式存在args中,如: def func(*args):...

    深入理解python中函数传递参数是值传递还是引用传递

    如果函数收到的是一个可变对象(比如字典 或者列表)的引用,就能修改对象的原始值——相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能 直接修改原始对象...

    简单谈谈Python中函数的可变参数

    和C语言一样,Python中也有可变参数函数,即一个函数可以接收多个参数,而这些参数的个数在函数调用之前事先是不知道的。下面这篇文章我们来介绍下python中的可变参数

    Python 中的参数传递、返回值、浅拷贝、深拷贝

    对于不可变对象(数字、字符、元组等)的参数,更类似值传递;对于可变对象(列表、字典等),更类似引用传递。 def fun1(n): print(n) # n在没修改前,指向的地址和main函数中n指向的地址相同 n = 20 # n在修改...

    理解Python中函数的参数

    除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。 默认参数 我们仍以具体的例子来说明如何定义函数的默认参数。先写...

    Python可变参数函数用法实例

    主要介绍了Python可变参数函数用法,实例分析了Python可变参数函数的定义与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    Python中函数的初级知识.md

    定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义...除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。

    Python函数参数操作详解

    本文实例讲述了Python函数参数操作。分享给大家供大家参考,具体如下: 简述 在 Python 中,函数的定义非常简单,满足对应的语法格式要求即可。对于调用者来说,只需关注如何传递正确的参数,以及获取相应的返回值就...

    深入解析Python中函数的参数与作用域

    函数传递参数时的一些简要的关键点: 参数的传递是通过自动将对象赋值给本地变量名来实现的。所有的参数实际上都是通过指针进行传递的,作为参数被传递的对象从来不自动拷贝。 在函数内部的参数名的赋值不会影响...

    python-参数组合.docx

    Python中的参数组合主要包括位置参数、关键字参数、默认参数和可变参数。下面我们将分别介绍这些参数组合的用法和特点。 1. 位置参数 位置参数是指在函数或方法调用时,按照参数列表中的顺序传递参数。例如: ``` ...

    小议Python中自定义函数的可变参数的使用及注意点

    Python的可变参数有两种,一种是列表类型,一种是字典类型。列表类型类似 C 中的可变参数,定义方式为 def test_list_param(*args) : for arg in args : print arg 其中 args 是一个 tuple。 字典类型的可变参数...

    Python 函数的可变参数、切片、迭代和列表生成式

    Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。 2. 切片 L = range(1, 101) # L = [1, 2, 3, ..., 100] print(L[0:3]) # 等同于L[:3],...

    Python程序基础:函数基本概念.pptx

    但当参数类型为可变数据类型(如列表、字典、集合等)时,在函数内部使用下标或其他方式为其增加、删除元素或修改元素值时,修改后的结果是可以反映到函数之外的,即实参也会得到相应的修改。;1.位置参数;2.默认值...

    对Python强大的可变参数传递机制详解

    写着写着就发现Python可变长度参数的机制真是灵活而强大. 假设有一个元组t,包含n个成员: t=(arg1,...,argn) 而一个函数f恰好能接受n个参数: f(arg1,...,argn) f(t)这种做法显然是错的,那么如何把t的各成员作为...

Global site tag (gtag.js) - Google Analytics