鱼C论坛

 找回密码
 立即注册
查看: 1864|回复: 2

pythonj 迭代问题,求详解

[复制链接]
发表于 2021-3-24 18:05:03 | 显示全部楼层 |阅读模式

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

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

x
_list = []
for i in range(3):
    def func():                   #是闭包吗?
        return i+1
    func.__doc__ = i
    func.__hash__ = i
    func.__repr__ = i
    func.__defaults__ = tuple([i]) #这个属性必须是tuple类型
    func.__name__ = f'{i}'
    func.hello = i  #自定义一个属性并赋值
    # 不能再玩了
    _list.append(func)

for f in _list:
    print(f.__doc__,
          f.__hash__,
          f.__repr__,
          f.__defaults__,
          f.__name__,
          f.hello,
          f(),                        #为什么迭代三次,f()都是同一个值3
          )
# 输出
# 0 0 0 (0,) 0 0 3
# 1 1 1 (1,) 1 1 3
# 2 2 2 (2,) 2 2 3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-24 21:52:01 | 显示全部楼层

_list = []
for i in range(3):
    def func():                   #是闭包吗?
        return i+1
    func.__doc__ = i
    func.__hash__ = i
    func.__repr__ = i
    func.__defaults__ = tuple([i]) #这个属性必须是tuple类型
    func.__name__ = f'{i}'
    func.hello = i  #自定义一个属性并赋值
    # 不能再玩了
    _list.append(func)

i = 99#多加一行你就懂了

for f in _list:
    print(f.__doc__,
          f.__hash__,
          f.__repr__,
          f.__defaults__,
          f.__name__,
          f.hello,
          f(),                        #迭代三次,f()都是同一个值100
          )
# 输出
# 0 0 0 (0,) 0 0 100
# 1 1 1 (1,) 1 1 100
# 2 2 2 (2,) 2 2 100
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-25 06:58:32 | 显示全部楼层
还是不明白,希望老师详细说明
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-9 17:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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