python - 有没有办法调用函数“a”,它在可迭代/产生函数“b”上调用 next()
问题描述
如图所示,我有 2 个功能:
def num():
for number in range(1, 5):
yield number
def config_btn():
global rad_btn1, rad_btn2, rad_btn3, rad_btn4
c = next(num())
temp_entry.config(text=f'{iterate_questions(2)}'),
# temp_entry.config(state=DISABLED)
rad_btn1.config(text=f'{iterate_answer_choices(c, 1).title()}', indicatoron=0),
rad_btn2.config(text=f'{iterate_answer_choices(c, 2).title()}', indicatoron=0),
rad_btn3.config(text=f'{iterate_answer_choices(c, 3).title()}', indicatoron=0),
rad_btn4.config(text=f'{iterate_answer_choices(c, 4).title()}', indicatoron=0)
def num() 是一个在迭代时产生数字 1 到 5 的函数(我希望如此),而 config_btn 使用前一个函数将一个数字分配给“c”。然后将“c”传递给另一个函数。有没有办法可以从这些函数外部调用 config_btn 以将“c”更改为下一个数字并继续执行其余的函数?
我尝试更改 config_btn 以接受一个数字并通过
解决方案
如果其他全局变量不打扰您,您可以这样做:
def num():
for number in range(1, 5):
yield number
c = num()
def config_btn():
global rad_btn1, rad_btn2, rad_btn3, rad_btn4, c
next(c)
temp_entry.config(text=f'{iterate_questions(2)}'),
# temp_entry.config(state=DISABLED)
rad_btn1.config(text=f'{iterate_answer_choices(c, 1).title()}', indicatoron=0),
rad_btn2.config(text=f'{iterate_answer_choices(c, 2).title()}', indicatoron=0),
rad_btn3.config(text=f'{iterate_answer_choices(c, 3).title()}', indicatoron=0),
rad_btn4.config(text=f'{iterate_answer_choices(c, 4).title()}', indicatoron=0)
然而,它似乎并不干净。肯定有更好的办法。
然后你必须处理StopIteration
第 5 次迭代时抛出的错误,如果它到目前为止。
推荐阅读
- ruby-on-rails - Rake db:create 在 Ubuntu 18.04 上导致分段错误
- excel - Excel 数据透视表:总计平均值
- java - 如何在 Spring MVC 中更改 BindingResult 中的异常消息
- machine-learning - 我应该使用什么方法从 2 个输入数组中查找模式类型?
- kubernetes - 错误:在 Chart.yaml 中找到,但在图表/目录中丢失:mysql
- reactjs - 缺少道具的类型注释
- python - 调用 cross_val_score 时出现 ValueError
- symfony - 如何在 Symfony 中获取 Redis 队列中未处理消息的数量
- continuous-integration - OWASP ZAP HTTP POST 扫描未使用导入的 URL 执行
- python - 无法控制 api json 格式、文本或视频结果?