这里还有另一个noob查询。像“从不写两次相同的代码”这样的行情让我试图找出我的错误;这是我想改进的一个: 主文件中的代码:
if os.name == 'nt':
dosomething
另一种方式:
if os.name == 'nt':
os_is_nt = True
if os_is_nt:
dosomething
另一种方法,将此函数放入导入
detectNT()
if os.name == 'nt':
return True
else:
return False
我的信念是,如果不弄清楚如何检查任何速度差异,我应该将它切回原来:
if os.name == 'nt':
dosomething
但我的信仰很弱,这就是为什么我在这里。
另外,我在想有一种方法可以找到本地文件分隔符..? 我写了这个:
def os_file_sep():
file_separator = "/"
if os.name == 'nt':
file_separator = "\\"
return file_separator
答案 0 :(得分:1)
使用import Control.Applicative (liftA2)
liftA2 g getLine getLine >>= putStrLn
(或os.path.join
)。不要重新发明轮子。它简单而且很棒。
os.path.sep
>>>os.path.join("foo", "bar")
'foo\\bar'
检查)是最好的IMO。它简单易读(除非你在许多不同的地方检查,然后我猜变量可能更容易出错)。if
检查检查是否简单,如果检查复杂,则会起作用。答案 1 :(得分:1)
你的一般性问题是关于表现,所以我会回答这个问题。
主要规则是:除非您确实需要,否则不要担心低级别的表现。这意味着你应该小心算法而不是初看到低级优化,并且总是喜欢简单和可维护的代码。
当您遇到性能问题(或怀疑您很快就会遇到)时,请查看您的代码。 Python提供了标准库中开箱即用的有用工具。其中一个是profile
或其优化版本cProfile
。摘自手册:
要使用主入口点foo()来分析应用程序,您需要将以下内容添加到模块中:
import cProfile
cProfile.run('foo()')
上述操作会导致foo()运行,并会打印一系列信息行(个人资料)。
现在您知道您的计划大部分时间花在哪里,并且您知道应该进行低级优化的部分。
再次,Python提供了timeit
模块的开箱即用。 该模块提供了一种简单的方法来计算一小段Python代码。它既有命令行,也有可调用的接口。它避免了许多用于测量执行时间的常见陷阱。
对于您提出的确切问题,正确的答案是DavidMašek的答案。这是针对性能的一般问题。无论如何,如果您对不同解决方案(您和David的解决方案)的表现有疑问,请使用timeit
来确定,并可选择在此自我回答。