作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 while 循环的函数。在开始该功能之前,我希望能够决定是每次循环遍历图像时都导出图像,还是只想显示它,两者都做或都不做。
我不想在循环中加入一个“if”,每次我通过它时都会被问到,所以我想我只写该函数的 4 个不同版本(loop、loop_show、loop_export、loop_show_export)怎么样? .但我认为一定有一种方法可以不复制粘贴函数的其余部分。
有办法吗?或者是否有更好的装饰器或其他方式?
def main():
...
while True:
...
####### code that I need to dis-/enable #######
for image in images:
video_in.write(image) # preparation for export
Show.show_win('in', image) # show input
###############################################
...
最佳答案
如果我没理解错的话,这就是你需要的:
def main(show=False, export=False):
...
while True:
...
####### code that I need to dis-/enable #######
for image in images:
if export:
video_in.write(image) # preparation for export
if show:
Show.show_win('in', image) # show input
###############################################
...
当以 main()
调用函数时,show
和 export
参数默认为 False
,因此循环中的两个if
都没有执行。
如果您调用 main(show=True)
,则执行 if show:
。
如果您调用 main(export=True)
,则执行 if export:
。
如果您调用 main(show=True, export=True)
两个 if
都会执行。
正如人们在评论中所说,检查一个 bool 值几乎不需要时间,代码可读性强,几乎相同的函数中没有重复的行。无需寻找更详细的解决方案。
关于python - 如何在不在 Python 中复制粘贴其余部分的情况下获取函数的多个版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58321645/
我是一名优秀的程序员,十分优秀!