python收集参数

最近学习python,看《Python基础教程》(第2版),发现函数定义里面有一个“收集参数”很有趣。

用户定义函数时,可以定义一个确定参数数量的函数,如:

>>> store(data, name1, name2, name3)

但是假如定义前不知道有多少个参数,该如何定义呢,C++和java中都有相应的解决方法,python中自然也有

def print_params(*params):
    print(params)

这里参数前面加上了星号*,即是不确定数量的参数,调用方式如下:

>>> print_params(‘Testing‘)
(‘Testing‘,)
>>> print_params(1, 2, 3)
(1, 2, 3)
>>> print_params()
()

从上面的三个例子可以看出,使用*作为不确定数量参数,输入参数为元组类型

这种方法为啥叫收集参数呢?因为它收集所有其余位置参数,这样其实说明,它只能在参数末尾进行收集,而不能在开头或者中间收集

除了收集散列的参数,还可以收集key-value字典类型的参数,例如:

def print_params_3(**params):
    print(params)

调用方式:

>>> print_params_3(x=1, y=2, z=3)
{‘z‘: 3, ‘x‘: 1, ‘y‘: 2}

二者一起用:

print_params_4(x, y, z=3, *pospar, **keypar):
    print(x, y, z)
    print(pospar)
    print(keypar)

调用方式;

>>> print_params_4(1, 2, 3, 4, 5, 6, 7, foo=1, bar=2)
1 2 3
(5, 6, 7)
{‘foo‘ : 1, ‘bar‘ : 2}
>>> print_params_4(1,2)
1 2 3
()
{}

参数收集的逆过程:

函数参数使用*号收集得到元组,使用**收集得到字典,那么反过来使用元组和字典可以作为函数参数

def add(x,y):
    return x+y

>>> params = (1, 2)>>> add(*params)3

原文地址:https://www.cnblogs.com/lxx-coder/p/10099939.html

时间: 2024-11-05 20:46:40

python收集参数的相关文章

Python 收集参数与反转过程

收集 参数 简单的说,采用如下定义的函数 def my_func(*param1, **param2): print *param1 print **param2 就是Python中的收集参数.即,所有位置参数会以元组的形式传递给函数my_func()的形式参数param,而位置参数之后的关键字参数会组成字典形式传递给函数my_func()的形式参数param2. 示例如下: >>>my_func(1,2,3,foo='fooword',bar='barword') (1, 2, 3)

第七章第3讲:python函数的关键字参数、默认参数、(收集参数)

1.关键字参数 作用:函数参数赋值时,不需要考虑函数代码块中参数的位置 def hello1(greeting,name): print("%s %s" % (greeting,name)) def hello2(name,greeting): # print("%s %s" % (name, greeting)) print("%s %s" % (greeting,name)) print(hello1("hello",&q

Python3基础 函数 收集参数+普通参数 的示例

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: # 收集参数 定制参数 定制参数 def MyFun(* paramters, name, key) : print('收集参数的长度:',len(paramters)) print(paramters[1]) print(name) print(key) #如何调用呢? #定

python 函数参数多种传递方法

python进阶教程之函数参数的多种传递方法 我们已经接触过函数(function)的参数(arguments)传递.当时我们根据位置,传递对应的参数.我们将接触更多的参数传递方式.回忆一下位置传递:复制代码代码如下: def f(a,b,c): return a+b+cprint(f(1,2,3)) 在调用f时,1,2,3根据位置分别传递给了a,b,c.关键字传递有些情况下,用位置传递会感觉比较死板.关键字(keyword)传递是根据每个参数的名字传递参数.关键字并不用遵守位置的对应关系.依然

Python 函数参数类型大全(非常全!!!)

Python 函数参数类型大全(非常全!!!) 1.在python编写程序里面具有函数文档,它的主要作用是为了让别人可以更好的理解你的函数,所以这是一个好习惯,访问函数文档的方式是: MyFunction.__doc__ 2.python编写程序函数的时候具有两类参数: 形式参数(形参)及其实际参数(实参). 跟绝大部分编程语言一样,形参指的是函数创建和定义过程中小括号里的参数,而实参指的是函数在调用过程中传递进去的参数. 3.关键字参数,是指函数在调用的时候,带上参数的名字去指定具体调用的是哪

python函数参数类型及其顺序

根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY.POSITIONAL_OR_KEYWORD.VAR_POSITIONAL.KEYWORD_ONLY.VAR_KEYWORD.如图: POSITIONAL_ONLY:参数值必须以位置参数的形式传递.python没有明确的语法来定义POSITIONAL_ONLY类型的参数,但很多内建或扩展模块的函数中常常会接收这种参数类型,实际使用中不多见,这里暂不考虑. PO

Python收集主机信息

Python收集linux主机信息,需要安装dmidecode命令,yum -y install dmidecode #!/usr/bin/env python # coding=utf-8   from subprocess import Popen, PIPE   #获取ifconfig命令信息 def getIfconfig():     p = Popen(['ifconfig'], stdout=PIPE)     data = p.stdout.read().decode()    

17SpringMvc_在业务控制方法中写入包装User的模型来收集参数——解决问题

前一篇文章,讲了在业务方法中多个模型收集参数有一个问题,现在这篇文章就来解决一上一篇文章的问题. User和Admin是两个不同的实体类.我们解决问题的方法是: 如果多个模型中有相同的属性时,可以用user.name或admin.name来收集客户端参数.就是用一个新的模型将User和Admin再封装一次. 给出案例的结构图: 上面结构图中用到了Admin.java;Bean.java;UserAction.java;springmvc_008.xml;spring.xml;web.xml;pe

[Python] 函数参数小记

函数参数模式匹配总览 语法 位置 解释 func(value) 调用者 常规参数:位置匹配 func(name=value) 调用者 关键字参数:键值匹配 func(*seq) 调用者 将序列解包为常规参数并传参 func(**dict) 调用者 将字典解包为关键字参数并传参 def func(name) 函数定义 常规参数:位置匹配或变量名匹配 def func(name=value) 函数定义 设置默认参数值 def func(*name) 函数定义 收集参数构成序列 def func(**