我是一名使用python的初学程序员,我想知道函数返回的最佳实践是什么。我有很多条件,但只要其中一个是真的,我想杀死该函数并返回一个bool值。 说,我们有:
a)
def foo():
if condition1:
return True
if condition2:
return True
if condition3:
return True
return False
b)
def foo():
bar = False
if condition1:
bar = True
elif condition2:
bar = True
elif condition3:
bar = True
return bar
一种方式比另一方好吗?为什么?或者这是一些完全垃圾,应该以完全不同的方式实现?在其他语言中它是否与python不同(或者,是否有“pythonic”方式)? 提前感谢大家的答案。 顺便说一句,是否有最佳实践的标签,或类似的东西?
答案 0 :(得分:5)
在我看来,第一个版本更像Pythonic,但它可以这样编写:
return condition1 or condition2 or condition3
答案 1 :(得分:3)
a.)
和b.)
都有效。对于具有C等资源管理或调试且只想在一个地方中断的语言,首选项为b.)
。见https://softwareengineering.stackexchange.com/questions/118703/where-did-the-notion-of-one-return-only-come-from。
对于Python和其他语言,使用它们是标准的。见Should a function have only one return statement?
答案 2 :(得分:2)
您不使用“bar”变量,也不需要创建它。
其他方式:
require 'image'
gm = require 'graphicsmagick'
-- change the string
local jpg_filename = string.gsub(train_files[i],".[Bb][Mm][Pp]$",".jpg")
-- get the info so we can build the size string
local image_info = gm.info(train_path .. train_files[i])
-- convert takes a size string h x w
local size_string = image_info["height"] .. "x" .. image_info["width"]
gm.convert{
input = train_path .. train_files[i],
output = train_path .. jpg_filename,
size = size_string,
quality = 95,
verbose = true
}
local img_raw = image.load(train_path .. jpg_filename):mul(255)