内建函数
input与
sys.stdin.readline函数的功能并不完全相同,哪个函数的速度更快可能取决于您正在执行的操作的细节。正如aruisdante所评论的那样,当您提供的报价来自于Python
3时,其差异要小于Python 2中的差异,但仍然存在一些差异。
第一个区别是
input具有一个可选的提示参数,如果解释器正在交互运行,将显示该参数。即使提示为空(默认值),这也会导致一些开销。另一方面,如果您确实需要提示,它可能比
readline呼叫之前执行a都要快。
下一个区别是
input从输入的末尾去除任何换行符。如果您仍然要删除该内容,那么
input让它为您完成而不是这样做可能会更快
sys.stdin.readline().strip()。
最后的区别是如何指示输入的结尾。如果没有更多输入(另一端的stdin已关闭),则在调用它时
input会引发
EOFError。
sys.stdin.readline另一方面,将在EOF返回一个空字符串,您需要知道该字符串以进行检查。
还有第三个选项,在上使用文件迭代协议
sys.stdin。这可能很像call
readline,但逻辑可能更好。
我怀疑虽然各种选项之间的性能差异可能存在,但它们希望比简单地从磁盘读取文件(如果文件很大)并执行任何操作所花费的时间成本小。我建议您避免过早优化的陷阱,而只执行最适合您问题的方法,并且如果程序太慢(“太慢”是非常主观的),则可以进行性能分析以了解最有效的方法时间。除非实际上很重要,否则不要在决定采用不同输入方式之间花费大量精力。



