我们都知道,定义一个函数,当传入的参数个数未知时就可以使用*来表示。

单引号*:

def test(*args):
    if len(args) >= 4:
        print(arg[3])
test(1,2,3,4)

运行结果:

4

在这里*args表示把传入的参数都放在元组args里面。

双引号**:

def test(**kwargs):
    print(kwargs)
test(a=1,b=2)

运行结果:

{'b':2, 'a':1}

在这里**针对的是关键字参数和字典。

另外一种情况是,当我们调用函数时,把*args,**kwargs当作参数传进去。

def test(a,x,i):
    print(a+x+i)
args = (2,1,4)
test(*args)
kwargs = {'a':3,'x':6,'i':2}
test(**kwargs)

运行结果:

7

11

note:把字典当参数传进去时,要保证字典的key与函数的参数名一致。test(**kwargs)等价于test(a=3,x=6,i=2)

星号表达式在迭代元素为可变元组/数组/字典的序列时是很有用的。

a = [('x', 2, 5), ['y', 'nihao'], {'z', 4, 9}]
for tag, *args in a:
    print(tag, args)

运行结果:

x [2, 5]
y ['nihao']
z [4, 9]

python中的星号*、**的意义的更多相关文章

  1. python中字符串格式化的意义(化妆)

    格式 描述%% 百分号标记 #就是输出一个%%c 字符及其ASCII码%s 字符串%d 有符号整数(十进制)%u 无符号整数(十进制)%o 无符号整数(八进制)%x 无符号整数(十六进制)%X 无符号 ...

  2. python中的单下划线和双下划线意义和作用

    Python中并没有真正意义上的“私有”,类的属性的的可见性取决于属性的名字(这里的属性包括了函数).例如,以单下划线开头的属性(例如_spam),应被当成API中非公有的部分(但是注意,它们仍然可以 ...

  3. python中星号变量的几种特殊用法

    python中星号变量的几种特殊用法 不知道大家知不知道在Python中,星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法"在变量前添加单个星号或两个星号",实现多参数的传入 ...

  4. Python中__init__方法介绍

    本文介绍Python中__init__方法的意义.         __init__方法在类的一个对象被建立时,马上运行.这个方法可以用来对你的对象做一些你希望的 初始化 .注意,这个名称的开始和结尾 ...

  5. 2019-04-15 Python中的面向对象学习总结

    一.面向对象总结: (1)三要素:封装,继承,多态                                       详细介绍链接:https://www.jianshu.com/p/68a ...

  6. Python中读取txt文本出现:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape问题解决

    windows中的路径是反斜杠\,然而反斜杠\在python中有着转义字符的意义,所以在py文件中写windows文件路径的时候,要特别注意反斜杠\的使用. 下面有三种解决方式: 方式一:转义的方式 ...

  7. Python中序列解包与函数的参数收集之间的关系

    在<第4.7节 Python特色的序列解包.链式赋值.链式比较>中老猿介绍了序列解包,<第5.2节 Python中带星号的函数参数实现参数收集>介绍了函数的参数收集,实际上函数 ...

  8. <转>Python 参数知识(变量前加星号的意义)

    csdn上的牛人就是多,加油 —————————————————————————— 过量的参数 在运行时知道一个函数有什么参数,通常是不可能的.另一个情况是一个函数能操作很多对象.更有甚者,调用自身的 ...

  9. [转]关于python中带下划线的变量和函数的意义

    Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就易于阅读, ...

随机推荐

  1. PHP设置http头信息

    <?PHP function https($num) { $http = array ( 100 => "HTTP/1.1 100 Continue", 101 =&g ...

  2. 解决Webservice内存溢出-用XmlWriter

    XmlWriter 表示一个编写器,该编写器提供一种快速.非缓存和只进的方式来生成包含 XML 数据的流或文件.这个就可以不占用内存,将数据放入磁盘中.也就不会出现内存溢出 public class ...

  3. poj 1001 求高精度幂

    本题的测试用例十分刁钻,必须要考虑到很多的细节问题,在这里给出一组测试用例及运行结果: 95.123 12 548815620517731830194541.899025343415715973535 ...

  4. Bucket Sort

    (referrence: GeekforGeeks) Bucket sort is mainly useful when input is uniformly distributed over a r ...

  5. Path Sum II 解答

    Question Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the ...

  6. Impala 5、Impala 性能优化

    • 执行计划 – 查询sql执行之前,先对该sql做一个分析,列出需要完成这一项查询的详细方案 – 命令:explain sql.profile 要点: • 1.SQL优化,使用之前调用执行计划 • ...

  7. 【bzoj1031】[JSOI2007]字符加密Cipher

    题目描述 喜欢钻研问题的JS同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法:把需要加密的信息排成一圈,显然,它们有很多种不同的读法.例如下图,可以读作:JSOI07 ...

  8. Unity 代码规范(PlateFace)1.0版本

    PlateFace Unity开发规范(1.0) 1.项目都采用英文名命名,图片,音频,资源都不能采用中文. 2.方法名: 帕斯卡命名(所有单词首字母大写) 3.字段: 在Unity中组件字段名第一个 ...

  9. Android Studio虚拟机配置虚拟键盘

    1. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2pjMjExMzIy/font/5a6L5L2T/fontsize/400/fill/I0JBQkF ...

  10. PHP反射ReflectionClass、ReflectionMethod 入门教程

    PHP反射ReflectionClass.ReflectionMethod 入门教程 作者:SNSGOU 发布于:2014-03-16 16:44:00  分类:PHP   浏览(6145) PHP5 ...