1. 转自: https://www.cnblogs.com/liumengchen-boke/p/5848400.html

* 函数接收参数为元组

例如

def myfun(*args): #相当于 def myfun(1,2,3)    ==> args 就相当于(1,2,3)

  for a in args:

    print(a)

** 表示函数接收参数为一个字典

def myfun(**args) :#相当于 def myfun({a:1,b:2,c:3}) ==>args 就相当于{a:1,b:2,c:3}

  for k,v in args:

    print(k,":",v)

2. 转自: https://www.cnblogs.com/ShawnYuki/p/6932658.html

3. 一个* 可变参数与元组 list的关系:

转自:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738449338c8a122a7f2e047899fc162f4a7205ea3000

可变参数

在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。

我们以数学题为例子,给定一组数字a,b,c……,请计算a2 + b2 + c2 + ……。

要定义出这个函数,我们必须确定输入的参数。由于参数个数不确定,我们首先想到可以把a,b,c……作为一个list或tuple传进来,这样,函数可以定义如下:

def calc(numbers):sum = 0for n in numbers:sum = sum + n * nreturn sum

但是调用的时候,需要先组装出一个list或tuple:

>>> calc([1, 2, 3])
14
>>> calc((1, 3, 5, 7))
84

如果利用可变参数,调用函数的方式可以简化成这样:

>>> calc(1, 2, 3)
14
>>> calc(1, 3, 5, 7)
84

所以,我们把函数的参数改为可变参数:

def calc(*numbers):sum = 0for n in numbers:sum = sum + n * nreturn sum

定义可变参数和定义list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数:

>>> calc(1, 2)
5
>>> calc()
0

如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做:

>>> nums = [1, 2, 3]
>>> calc(nums[0], nums[1], nums[2])
14

这种写法当然是可行的,问题是太繁琐,所以Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:

>>> nums = [1, 2, 3]
>>> calc(*nums)
14

这种写法相当有用,而且很常见。

综上,

定义的时候使用*, 是将入参入参转换成lst, tuple.

调用的时候用*, 是将list 或者 tuple转换 成可变参数作为入参。

以下为自己的例子:

def get_three_str():
    return "hello", "the", "word"

list_three_str = get_three_str()

print(list_three_str[0])
#次数输出的是列表, 结果为three str: ('hello', 'the', 'word')
print("three str: {}".format(list_three_str))
#此次输出的是可变参数, 结果为three str: hello, the, word
print("three str: {}, {}, {}".format(*list_three_str))

def get_the_fisrt_str(lst):
    print(lst[1])

def print_str(first, second, third):
    print("fisrt : {}".format(first))
    print(f"second : {second}")
    str = "third : " + third
    print(str)

get_the_fisrt_str(list_three_str)
print_str(*list_three_str)

【转载】python 函数的入参 一个* 两个* 的使用与区别相关推荐

  1. python函数的入参和传参

    https://www.bilibili.com/video/BV1k7411W78H # 1.位置参数 def calc(a, b, c):print(a + b * c)calc(1, 2, 3) ...

  2. Python函数之传参

    Python函数之传参 1.函数的传参 实参 位置参数,从左至右,一一对应形参. 关键字参数, 一一对应形参. 混合参数.一一对应形参并且所有的位置参数一定在所有的关键字参数前面. 形参 位置参数.从 ...

  3. [转载] python函数——字典设置默认值get() 与 setdefault()区别

    参考链接: Python字典dictionary | setdefault方法 文章目录 示例代码总结 python函数 系列目录:python函数--目录 在python 中 get()以及setd ...

  4. python函数的传参要求_python中函数传参详解

    一.参数传入规则 可变参数允许传入0个或任意个参数,在函数调用时自动组装成一个tuple: 关键字参数允许传入0个或任意个参数,在函数调用时自动组装成一个dict: 1. 传入可变参数: def ca ...

  5. python函数在传参的时候,到底在传些什么?

    C++这样的语言用多了之后,在Python函数传递参数的时候,经常会遇到一个问题,我要传递一个引用怎么办? 比如我们想要传一个x到函数中做个运算改变x的值: def change(y):y += 1x ...

  6. [转载] python 函数返回多个值

    参考链接: 在Python中返回多个值 (廖雪峰Python教程学习笔记) 函数体内部的语句在执行时,一旦执行到return,函数就执行完毕,并将结果返回.  如果没有return语句,函数执行完毕后 ...

  7. 奇怪,有的Python函数或方法调用需要两对括号?

    本文源自于一位读者的问题:为啥有的函数或方法调用要使用两对括号呢? 但是在我的印象里并没有这种用法啊.于是我简单扫了一眼代码,发现这位朋友说的并不是函数调用需要两对括号,而是使用元组做函数或方法的参数 ...

  8. [转载] python 函数参数类型检查

    参考链接: Python函数参数 在Python中,不知道函数参数类型是一个很正常的事情,特别是在一个大项目里. 我见过有些项目里,每一个函数体的前十几行都在检查参数类型,这实在是太麻烦了.而且一旦参 ...

  9. [转载] Python——函数练习(包括简单递归)

    参考链接: Python中的复数2(重要函数和常量) Python--函数练习(包括简单递归,参数传递) python排序函数 list.sort( key=None, reverse=False) ...

最新文章

  1. ​多视图立体视觉: CVPR 2019 与 AAAI 2020 上的ACMH、ACMM及ACMP算法介绍
  2. mysql空间释放_linux 空间释放,mysql数据库空间释放
  3. 进入全真互联网——音视频通信的技术变革
  4. POJ2406-Power Strings【KMP】
  5. 第十五届北京师范大学程序设计竞赛决赛(网络同步赛) B lca水 D 思维,找规律...
  6. python自动获取邮件数据_Python 获取测试报告内容并发送邮件
  7. matlab中数组的创建
  8. 企业架构-数据服务总线思路
  9. 北卡州立大学计算机科学硕士,北卡罗莱纳州立大学计算机科学专业研究生申请条件有哪些?...
  10. 齐齐哈尔大学计算机考研资料汇总
  11. 数据库三级考试 真题存储过程汇总(含答案)
  12. X11 Wayland 及 Mir 比较
  13. 由《对应届和即将应届毕业生的忠告》想到的
  14. IE主页被恶意修改处理办法
  15. 我们在阳朔西街等你……
  16. unity Input
  17. Jenkins+tomcat安装笔记
  18. Java-JWT Utils
  19. uniapp 保存base64图片
  20. 用python制作文本编辑器

热门文章

  1. GitHub 的 Fork 是什么意思?
  2. paddle百度飞浆入门使用教程
  3. 计算机休眠会断网,win10系统休眠断网的解决方法
  4. 基于WebRtc实现安卓视频一对一聊天
  5. 图像处理与计算机视觉的区别
  6. Ubuntu系统下OpenCV使用实例(虚拟机获取摄像头权限)
  7. [摘]毕业论文之感谢篇
  8. opencv——图像中关于轮廓的一些操作
  9. Fresco图片加载+EventBus+Butterknife+Retrofit+RxJava+RxAndroid
  10. Apache ECharts的缘起和发展