找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2653|回复: 0

[讨论] 关于 unpack 元组产生的不同结果

0

主题

0

帖子

0

积分

贫民

积分
0
sysadmin 发表于 2020-3-14 09:56:48 | 显示全部楼层 |阅读模式
本帖最后由 sysadmin 于 2020-3-14 10:00 编辑

在 collections.UserDict 源码看到以下代码:https://github.com/python/cpython/blob/v3.6.2/Lib/collections/__init__.py#L963-L972    为什么 unpack 后的 args 是原来的 args 而不是 unpack 后的 args ?

一个简单的 demo:
  1. In [1]: class foo:
  2.    ...:     def __init__(*args, **kwargs):
  3.    ...:         self, *args = args
  4.    ...:         print(self, args, len(args))
  5.    ...:   
  6. In [2]: foo   
  7. Out[2]: __main__.foo
  8. In [3]: foo('self', {'name': 2}, age=21)      
  9. <__main__.foo object at 0x7f45001aa278> ['self', {'name': 2}] 2
  10. Out[3]: <__main__.foo at 0x7f45001aa278>
复制代码

实际期望的是:
  1. In [7]: args = ('self', {'name': 2})   
  2. In [8]: self, *args = args  
  3. In [9]: self   
  4. Out[9]: 'self'
  5. In [10]: args     
  6. Out[10]: [{'name': 2}]
复制代码


回复

使用道具 举报

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

本版积分规则

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