我有一个返回多个项目的方法。
def multiReturn():
return 1,2,3,4
我把它分配在一行上
one, two, three, four = multiReturn()
有没有办法清理上面的行
就像是:
one,
two,
three,
four = multiReturn()
因为我有一些变量名变大了,页面的宽度让我很困扰。
任何清理它的想法
我有一个返回多个项目的方法。
def multiReturn():
return 1,2,3,4
我把它分配在一行上
one, two, three, four = multiReturn()
有没有办法清理上面的行
就像是:
one,
two,
three,
four = multiReturn()
因为我有一些变量名变大了,页面的宽度让我很困扰。
任何清理它的想法
您可以使用括号:
(
one,
two,
three,
four
) = range(4)
如果您已经返回了这么多项目,请考虑创建某种数据结构。一个类应该没问题,但如果你认为它矫枉过正,你可以使用 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()
在每行的末尾使用反斜杠。
one, \
two, \
three, \
four = multiReturn()
缩短你的变量名。
不完全是。如果您不能适应通常的宽度限制,则暗示您需要进行一些重构。让我来谈谈。
为了清楚起见,名称应保持简短。另一方面,您需要他们描述他们持有的价值,或他们正在执行的代码(例如函数等)
如果您很难描述价值并保持名称简短,这意味着对于任何阅读您的代码的人来说,阅读和理解它很可能会更加困难,因为您让他们专注于多种事情。
对于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 读取......)而不会弄乱我的代码的要点。