我有一个返回多个项目的方法。
def multiReturn():
return 1,2,3,4
我将它分配到一行
one, two, three, four = multiReturn()
有没有办法清理上面一行
类似的东西:
one,
two,
three,
four = multiReturn()
因为我有一些变量名变大了,页面的宽度让我烦恼。
任何清理它的想法
答案 0 :(得分:10)
您可以使用括号:
(
one,
two,
three,
four
) = range(4)
答案 1 :(得分:8)
如果您已经返回了这么多项目,请考虑创建某种数据结构。一个班级应该没问题,但是如果你觉得它太过分了,你可以使用dict甚至是namedtuple。
# First define the structure
myStruct = namedtuple('myStruct', ['item1', 'item2', 'item3', 'item4'])
# Then use it
def multiReturn():
return myStruct(1,2,3,4)
# No unpacking required!
this_is_awesome = multiReturn()
答案 2 :(得分:2)
在每行末尾使用反斜杠。
one, \
two, \
three, \
four = multiReturn()
答案 3 :(得分:-1)
缩短变量名称。
不,真的。如果你不能适应通常的宽度约束,那么暗示你需要进行一些重构。让我谈谈。
要保持清醒,名称应保持简短。另一方面,您需要它们来描述它们持有的值,或者它们正在执行的代码(我的功能等)。
如果您难以描述值和保持名称简短,则意味着对任何人而言 阅读你的代码,你很有可能甚至更难阅读和理解,因为你做了 他们专注于多种事情。
对于comaprison,如果我要写类似的东西:
class App():
def __init__(self):
self.config = {}
self.error = ""
# ...
configDatabaseConnection = mydbmodule.conect(credentials)
configQuery = "this and that"
config = configDatabaseConnection.query(configQuery)
configDatabaseConnectionErrorString = (configDatabaseConection.error)
if configDatabaseConnectionErrorString:
raise configError(configDatabaseConnectionErrorString)
# ...
通常意味着我需要将配置分离到另一个方法,而是使用它:
class App():
def __init__(self, credentials):
self.config = self.load_config(credentials)
self.error = ""
# ...
self.load_config()
def load_config(self, credentials):
conn = mydbmodule.conect(credentials)
q = "this and that"
config = conn.query(q)
if conn.error:
raise configError(conn.error)
self.config = config
更具可读性,并且允许在配置过程中添加更多逻辑(例如,回退,从文件读取而不是db ...),而不会混淆我的代码的要点。