Python:本地范围内的exec
在发布之前,我已经阅读了以下内容:Python:本地范围内的exec,python,generator,exec,Python,Generator,Exec,在发布之前,我已经阅读了以下内容: 但我的代码无法正常工作 代码如下: 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
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
作为参数,而不是直接在全局范围内写入,在分配给生成器后,调用\uuuuu next\uuu()
生成值
任何帮助都是值得的
@Jordanbrieère代码100%有效,但我需要将其写入生成器,该生成器将数组和数字作为参数,并生成值。所以我可以导入这个函数 您可以使用工厂函数。例如
import string
def 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__())
预期的输出是什么?@jordanbrieère代码100%工作,但我需要将其写入生成器,该生成器将数组和数字作为参数,并生成值。所以我可以导入这个函数