Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3:什么是更快的嵌套函数调用或if语句(try/excepts非常快)_Python_Python 3.x_Function_If Statement_Optimization - Fatal编程技术网

Python3:什么是更快的嵌套函数调用或if语句(try/excepts非常快)

Python3:什么是更快的嵌套函数调用或if语句(try/excepts非常快),python,python-3.x,function,if-statement,optimization,Python,Python 3.x,Function,If Statement,Optimization,在python3中,假设我需要一个整数。做这样的事情快吗 processed_number=int(舍入(浮点(一些输入))) 或者我应该这样做: 如果某些输入为int: 已处理的\u编号=一些\u输入 其他: 已处理的\u编号=整数(舍入(浮点(某些\u输入))) 或许 试试看: 一些语句需要输入(一些输入) #除类型错误外: #已处理的\u编号=整数(舍入(浮点(某些\u输入))) #一些语句需要输入(一些输入) #显然,最好减少异常处理:我可能会以错误的方式处理某些事情 除值错误外:

在python3中,假设我需要一个整数。做这样的事情快吗

processed_number=int(舍入(浮点(一些输入)))
或者我应该这样做:

如果某些输入为int:
已处理的\u编号=一些\u输入
其他:
已处理的\u编号=整数(舍入(浮点(某些\u输入)))
或许

试试看:
一些语句需要输入(一些输入)
#除类型错误外:
#已处理的\u编号=整数(舍入(浮点(某些\u输入)))
#一些语句需要输入(一些输入)
#显然,最好减少异常处理:我可能会以错误的方式处理某些事情
除值错误外:
#同样的事情
已处理的\u编号=整数(舍入(浮点(某些\u输入)))
一些语句需要输入(一些输入)
如果这是一个愚蠢的问题,我很抱歉,因为两者都使用函数调用。我只是想知道每种方法之间是否存在显著的时间差我知道我不应该对python代码进行太多优化,但这只是我很久以来一直存在的一个问题(可能是一个愚蠢的问题)。如果这是愚蠢的,请不要把我烧死



我并不是真的在编写需要这种优化的代码(目前);这只是一个问题,因此我可以在将来改进我的代码。

通常您不会期望经常这样做,因为这是一个主要的性能问题。您的代码中可能还有其他部分是性能限制因素

通常,最好以最干净的方式编写这些代码,这对于下一个查看代码的人来说是最明显的。不要被过早的优化所困扰。除非这是一个非常明显非常缓慢的事情,而且会发生很多事情,否则只需以最干净、最清晰的方式编写代码即可。如果有必要,之后您发现它很慢,您可以对它进行分析,找出它的慢位置并修复它


你通常会发现这类事情并不是问题所在。

这实际上取决于1)你的状况如何,2)你可能出错的频率。除非在异常情况下(数据或服务器故障),否则“尝试例外”会更快。如果您将其用作流控制机制,这不是一个好主意。如果我将其用于预处理输入(如定义函数或定义对象/类时),您本质上是在询问两种常用方法:EAFP和LBYL。答案是。。。这取决于您的代码和环境。这里有一个关于同一主题的讨论,但对于Java:FWIW,我不一定同意公认答案中的观点,但这要由您来判断。
如果某些输入是int:
正在测试输入是否是类
int
…您的最终选择是错误的;除了大量重复之外,它还捕获了非常常见的错误类型,这些错误类型可能是由于输入的类型/值以外的原因引起的,从而导致您处理意外情况。尽可能限制
try
s的范围,以避免意外处理异常,这些异常是由您不期望也无法合理处理的问题引起的。我要求的是性能,这是一个很好的答案。但是其他的评论告诉我EAFP是一个好办法。但既然你这么告诉我,我最后的结论是:我将使用EAFP,除非它比嵌套函数更清楚