huyanmin 发表于 2021-3-24 18:05:03

pythonj 迭代问题,求详解

_list = []
for i in range(3):
    def func():                   #是闭包吗?
      return i+1
    func.__doc__ = i
    func.__hash__ = i
    func.__repr__ = i
    func.__defaults__ = tuple() #这个属性必须是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

kogawananari 发表于 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() #这个属性必须是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

huyanmin 发表于 2021-3-25 06:58:32

还是不明白,希望老师详细说明
页: [1]
查看完整版本: pythonj 迭代问题,求详解