亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python:在本地范圍內執行

Python:在本地范圍內執行

紫衣仙女 2023-08-22 10:12:45
在發帖之前,我已經閱讀了以下內容:模塊級變量執行無法訪問的問題python 執行命令但我無法讓我的代碼運行。這是代碼:import stringarr = [0, 1, 2, 3, 4]required = 4red = ['0']alpha = string.printable[10:62]ss = ''it = len(arr) - required + 1for 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__()以生成值。任何幫助都是值得贊賞的。
查看完整描述

1 回答

?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊


您可以使用工廠函數。例如


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__())


查看完整回答
反對 回復 2023-08-22
  • 1 回答
  • 0 關注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號