首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在python中输出单个print语句,并将其余语句重定向为null

如何在python中输出单个print语句,并将其余语句重定向为null
EN

Stack Overflow用户
提问于 2021-02-11 02:54:31
回答 1查看 138关注 0票数 0

我有一个文件与3打印声明,所有必要。就像这样,

代码语言:javascript
运行
复制
def method1(n: int, m: int, matrix: list) -> list:
    for i in range(m):
        if i % 2 == 0:
            for j in range(n):
                print(str(matrix[i][j]), end=" ") # <-- 1
        else:
            for j in range(n - 1, -1, -1):
                print(str(matrix[i][j]), end=" ") # <-- 2


if __name__ == "__main__":
    from timeit import timeit

    matrix = [[10, 20, 30, 40], [15, 15, 25, 55], [17, 19, 17, 18], [1, 8, 9, 2]]
    print(timeit(lambda: method1(4, 4, matrix), number=10000))  # <-- 3

现在,我在一个大型项目中有类似的文件,我想检查每个方法运行所需的时间,因此只需要3,而rest就不需要了,但是如果我运行目录中的所有文件,比如12,就会造成许多杂乱,再加上其他文件中类似的冗余print语句。

我试过什么?

  1. return语句--只要我能做到--但是假设有一些方法我会遇到这样的语句,
代码语言:javascript
运行
复制
if something:
   print(ans)
   ans += 1

printreturn交换的地方是行不通的。

  1. yield函数,它创建了一个生成器函数,它基本上可以工作,但它会篡改timeit模块的结果。
  2. #单行注释,这是最好的方法,但如果我注释行12,那么这个方法就会中断。
  3. 编写一个函数,将输出重定向为null,并通过它传递每个文件不必要的print语句。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-11 03:11:37

可能在sys.stdout期间将timeit设置为/dev/null

在网上试试!

代码语言:javascript
运行
复制
if __name__ == "__main__":
    from timeit import timeit
    import sys

    matrix = [[10, 20, 30, 40], [15, 15, 25, 55], [17, 19, 17, 18], [1, 8, 9, 2]]
    stdout = sys.stdout
    with open('/dev/null', 'w') as sys.stdout:
        t = timeit(lambda: method1(4, 4, matrix), number=10000)
    sys.stdout = stdout
    print(t)  # <-- 3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66148112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档