鱼C论坛

 找回密码
 立即注册
查看: 1472|回复: 3

[已解决]关于Python中的*的使用,求一个解释或者这个用法的出处

[复制链接]
发表于 2017-11-8 10:08:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 gopythoner 于 2017-11-8 10:10 编辑

看测试代码:
  1. l = [1,2,3,4]

  2. def func(a,b,c,d):
  3.   print(a+b+c+d)
  4.   
  5. func(*l)
  6. print(*l)

  7. k = *l
  8. print(k)
复制代码


三个测试,前两个输入结果如下
  1. 10
  2. 1 2 3 4
复制代码


第3个测试报错,也就是说*l是不能直接赋值的

这个用法是偶然看到的,不知道原理是什么,有知道这种用法的出处的么?

补充一点:这个用法在元组和列表中都适用
最佳答案
2017-11-8 10:12:05
*是为函数的参数赋值做解包用的,也就是把一个包分解成多个值。
而k = *l,显然k作为一个变量名是无法接收多个值的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-11-8 10:12:05 | 显示全部楼层    本楼为最佳答案   
*是为函数的参数赋值做解包用的,也就是把一个包分解成多个值。
而k = *l,显然k作为一个变量名是无法接收多个值的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-8 10:29:20 From FishC Mobile | 显示全部楼层
定义一个函数的不定个数参数时通常使用*
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-8 11:11:33 | 显示全部楼层
冬雪雪冬 发表于 2017-11-8 10:12
*是为函数的参数赋值做解包用的,也就是把一个包分解成多个值。
而k = *l,显然k作为一个变量名是无法接收 ...

其实这个用法就是def func(*args,**kwargs):这里面的用法
脱了马甲我反而不认得了,就是看到别人用的时候感觉好神奇
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-3 19:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表