python 用途-python中的*和**的用途
def function_with_one_star(*t):
print(t, type(t))
def function_with_two_stars(**d)
print(d, type(d))
上面定义了两个函数,分别用了带一个星号和两个星号的参数,它们是什么意思,运行下面的代码:
function_with_one_star(1, 2, 3)
function_with_two_stars(a = 1, b = 2, c = 3)
结果如下
(1, 2, 3) <class 'tuple'>
{'a': 1, 'c': 3, 'b': 2} <class 'dict'>
由此可见,带一个星号(*)参数的函数传入的参数存储为一个元组(tuple);
而带两个星号(*)参数的函数传入的参数则存储为一个字典(dict),并且在
调用是采取 a = 1, b = 2, c = 3 的形式。
由于传入的参数个数不定,所以当与普通参数一同使用时,必须把带星号的参
数放在最后。
函数在定义中,通过在参数前加星号,将传递进来的多个参数转化为一个对象,元组或字典,可以说是将这些参数值收集起来。
参数前加一个星号,表明将所有的值放在同一个元组中,该参数的返回值是一个元组。
参数前加两个星号,表明将所有的值放在同一个字典中,该参数的返回值是一个字典。
位置参数
在参数名之前使用一个星号,就是让函数接受任意多的位置参数。
>>> def multiply(*args):
... total = 1
... for arg in args:
... total *= arg
... return total
...
>>> multiply(2, 3)
6
>>> multiply(2, 3, 4, 5, 6)
720
python把参数收集到一个元组中,作为变量args。显式声明的参数之外如果没有位置参数,这个参数就作为一个空元组。
关键字参数
python在参数名之前使用2个星号来支持任意多的关键字参数。
>>> def accept(**kwargs):
... for keyword, value in kwargs.items():
... print "%s => %r" % (keyword, value)
...
>>> accept(foo='bar', spam='eggs')
foo => 'bar'
spam => 'eggs'
注意:kwargs是一个正常的python字典类型,包含参数名和值。如果没有更多的关键字参数,kwargs就是一个空字典。
混合参数类型
任意的位置参数和关键字参数可以和其他标准的参数声明一起使用。混合使用时要加些小心,因为python中他们的次序是重要的。参数归为4类,不是所有的类别都需要。他们必须按下面的次序定义,不用的可以跳过。
1)必须的参数
2)可选的参数
3)过量的位置参数
4)过量的关键字参数
def complex_function(a, b=None, *c, **d):
这个次序是必须的,因为*args和**kwargs只接受那些没有放进来的其他任何参数。没有这个次序,当你调用一个带有位置参数的函数,python就不知道哪个值是已声明参数想要的,也不知道哪个被作为过量参数对待。
也要注意的是,当函数能接受许多必须的参数和可选的参数,那它只要定义一个过量的参数类型即可。
传递参数集合
除了函数能接受任意参数集合,python代码也可以调用带有任意多数量的函数,像前面说过的用星号。这种方式传递的参数由python扩展成为参数列表。以便被调用的函数
不需要为了这样调用而去使用过量参数。python中任何可调用的,都能用这种技法来调用。并且用相同的次序规则和标准参数一起使用。
>>> def add(a, b, c):
... return a + b + c
...
>>> add(1, 2, 3)
6
>>> add(a=4, b=5, c=6)
15
>>> args = (2, 3)
>>> add(1, *args)
6
>>> kwargs={'b': 8, 'c': 9}
>>> add(a=7, **kwargs)
24
>>> add(a=7, *args)
Traceback (most recent call last):
File "", line 1, in
TypeError: add() got multiple values for keyword argument 'a'
>>> add(1, 2, a=7)
Traceback (most recent call last):
File "", line 1, in
TypeError: add() got multiple values for keyword argument 'a'
注意这个例子的最后几行,特别留意当传递一个元组作为过量的位置参数时,是否要显式的传递关键字参数。因为python使用次序规则来扩展过量的参数,那位置参数要放在前面。这个例子中,最后两个调用是相同的,python不能决定那个值是给a的。
python 用途-python中的*和**的用途相关推荐
- python库的作用与用途_Python 中 absl 库的用途
absl 库全称是 Abseil Python Common Libraries.它原本是个C++库,后来被迁移到了Python上. 它是创建Python应用的代码集合.这些代码从谷歌自己的Pytho ...
- Python os模块 -Python系统编程中的操作模块
Python os模块 -Python系统编程中的操作模块 用途:处理(文件与目录)操作 以下为简单的常用操作 import os 导入os模块 help(os) 查看os模块帮助文档 os.name ...
- 实际上,Python 3.3中新的“ yield from”语法的主要用途是什么?
本文翻译自:In practice, what are the main uses for the new "yield from" syntax in Python 3.3? I ...
- python列表前加星号是什么_Python中的星号:用途及使用方法(1)
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 原作者:Trey Hunner Python中 *和**很常见.无论是对于编程萌新还是许多从其他编程语言( ...
- python中debug有什么用途_Python debug 总结
pdb import pdb; pdb.set_trace() (Pdb) 在最近刚发布的 Python 3.7 中,引入了 PPE 553 新特性 beakpoint ( Python 3.7 的新 ...
- python中debug有什么用途_18.python之如何debug
原本按照计划,这节课要做一个关于函数的练习,但我希望在拿到题目时,你能够先自己尝试.在编程时你会遇到很多次报错,为了能够更好的排查错误,我临时决定加一节课来讲如何debug. 对于计算机领域里的程序故 ...
- python pyc文件作用_Python中pyc文件的用途
什么是pyc文件 pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的 ...
- python 用途-Python在每个行业的用处
Python 交互式的开发环境,因为Python是解释运行,这样也很大的节省编译时间.Python语法也很简单,又有几种高级数据结构,如list列表.元组等,通过使用这些数据结构起来特别简单.Pyth ...
- python介绍和用途-Python --- Python的简介
编译型语言和解释型语言 计算机只能识别二进制编码(机器码),所以任何的语言在交由计算机执行时必须要先转换为机器码, 也就是像 print("hello") 必需要转换为类似 101 ...
- python语言用途-Python在每个行业的用处
Python 交互式的开发环境,因为Python是解释运行,这样也很大的节省编译时间.Python语法也很简单,又有几种高级数据结构,如list列表.元组等,通过使用这些数据结构起来特别简单.Pyth ...
最新文章
- PHP 面向对象:类的属性
- cvMorphology形态学原理解析及源码分析
- ES6使用object的is()方法比较两个值
- 安卓手机上运行 PC-E500 程序
- Jquery全选单选功能
- HDFS中心缓存管理
- elementui el-upload 删除指定文件
- OBS Windows10 1909版本黑屏问题解决方案
- Linux服务笔记之一:Telnet远程登录
- 通过对比文件md5值,实现对文件的替换
- sql 分组 行列转换
- 如何在android lolipop中开启google now
- Openssl 编译
- Linux笔记本 安装 qq/TIM/微信/百度网盘......解决方案
- 【愚人节专场】Java实现定时发送小情话
- 项目经理如何处理中途接手的项目
- win10系统遇到深色背景自动降低亮度解决方法、WIN10自动调节亮度、如何关闭WIN10自动调节亮度
- 旷野徒奔-Java底层篇(1.3)
- 每天坚持练字有什么好处(开心书写 快乐成才)
- GB/T 8567-2006《计算机软件文档编制规范》可行性分析(研究)报告(FAR)