Python:在本地范围内执行

在发帖之前,我已经阅读了以下内容:

但我无法让我的代码运行。

这是代码:

import string


arr = [0, 1, 2, 3, 4]

required = 4


red = ['0']

alpha = string.printable[10:62]

ss = ''

it = len(arr) - required + 1

for i in range(required):

    now = alpha[i]

    rd = '-'.join(red)

    ss += '\t' * (i + 1) + f'for {now} in range({it}-{rd}):\n'

    red.append(now)


exec('def inner_reducer():\n' + ss + '\t' * (required + 1) + f'yield {red[-1]}')



a = inner_reducer()

print(a.__next__())

print(a.__next__())

print(a.__next__())

print(a.__next__())


arr我需要一个以和作为参数的生成器,而不是直接在全局范围内编写required,在分配给生成器后,调用__next__()以生成值。


任何帮助都是值得赞赏的。


紫衣仙女
浏览 67回答 1
1回答

一只萌萌小番薯

您可以使用工厂函数。例如import stringdef make_inner_reducer_function(arr, required):    red = ['0']    alpha = string.printable[10:62]    ss = ''    it = len(arr) - required + 1    for i in range(required):        now = alpha[i]        rd = '-'.join(red)        ss += '\t' * (i + 1) + f'for {now} in range({it}-{rd}):\n'        red.append(now)    exec('def inner_reducer():\n' + ss + '\t' * (required + 1) + f'yield {red[-1]}')    return locals()['inner_reducer']f = make_inner_reducer_function([0, 1, 2, 3, 4], 4)a = f()print(a.__next__())print(a.__next__())print(a.__next__())print(a.__next__())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python