Skip to content
延迟绑定问题
2025年3月13日 root

延迟绑定的问题

python
def create_multipliers():
    return [lambda x : i * x for i in range(5)]

for multiplier in create_multipliers():
   print(multiplier(2))

输出:

shell
8
8
8
8
8

生成器解决办法

python
def create_multipliers():
  for i in range(4):
    yield lambda x : i * x

for multiplier in create_multipliers():
   print(multiplier(2))

偏函数解决办法

python
from functools import partial
from operator import mul
def multipliers():
  return [partial(mul, i) for i in range(4)]

Last updated: