2024-04-19 14:39:44 发布
网友
假设我有一个带return的if语句。从效率的角度来看,我应该使用
return
if
if(A > B): return A+1 return A-1
或者
if(A > B): return A+1 else: return A-1
在使用编译语言(C)或脚本语言(Python)时,我应该选择一种还是另一种?
由于return语句终止当前函数的执行,因此这两种形式是等价的(尽管第二种形式可能比第一种形式更具可读性)。
这两种形式的效率相当,如果if条件为false,底层机器代码必须执行跳转。
请注意,Python支持一种语法,在您的情况下只允许使用一个return语句:
return A+1 if A > B else A-1
来自Chromium's样式指南:
返回后不要使用else:
# Bad if (foo) return 1 else return 2 # Good if (foo) return 1 return 2 return 1 if foo else 2
关于编码风格:
大多数编码标准,不管是哪种语言,都禁止从一个函数返回多个语句,这是一种不好的做法。
(尽管我个人认为有几种情况下多个返回语句是有意义的:文本/数据协议解析器、具有大量错误处理的函数等)
所有这些行业编码标准的共识是,表达式应写成:
int result; if(A > B) { result = A+1; } else { result = A-1; } return result;
关于效率:
上述例子和问题中的两个例子在效率上都是完全等价的。所有这些情况下的机器代码都必须比较A>;B,然后分支到A+1或A-1计算,然后将结果存储在CPU寄存器或堆栈中。
编辑:
资料来源:
由于
return
语句终止当前函数的执行,因此这两种形式是等价的(尽管第二种形式可能比第一种形式更具可读性)。这两种形式的效率相当,如果
if
条件为false,底层机器代码必须执行跳转。请注意,Python支持一种语法,在您的情况下只允许使用一个
return
语句:来自Chromium's样式指南:
返回后不要使用else:
关于编码风格:
大多数编码标准,不管是哪种语言,都禁止从一个函数返回多个语句,这是一种不好的做法。
(尽管我个人认为有几种情况下多个返回语句是有意义的:文本/数据协议解析器、具有大量错误处理的函数等)
所有这些行业编码标准的共识是,表达式应写成:
关于效率:
上述例子和问题中的两个例子在效率上都是完全等价的。所有这些情况下的机器代码都必须比较A>;B,然后分支到A+1或A-1计算,然后将结果存储在CPU寄存器或堆栈中。
编辑:
资料来源:
相关问题 更多 >
编程相关推荐