Python中是否有某种方法可以使特定的代码行继续到下一行?

时间:2020-05-05 05:06:16

标签: python python-3.x

random_words = random.choice(str1) + '' + random.choice(str2) + '' + random.choice(str3) + '' + random.choice(str4) + '' + random.choice(str5) + ''

因此,基本上我有大约27个名为str1,str2,str3等的列表,所有这些列表都包含单词元素。使用random.choice(),我从每个列表中选择一个随机词,并将它们组合成一堆随机词。尽管我的问题是自从我对27个单词列表执行此操作以来,一行特定的代码将持续多长时间。所以我的问题是,Python中是否有某种方式可以让特定的代码行继续到下一行?我知道这听起来像是一个愚蠢的问题,但是这种情况对我来说经常发生,所以我只是想知道那是否是一回事。另外,如果不是(可能不是大声笑),是否有某种方法可以使我用不了那么长时间?我想我可以将5个列表组合在一起,然后再组合5个列表,最后将它们全部加在一起。

4 个答案:

答案 0 :(得分:1)

如果将表达式用括号括起来,则可以继续行。因此,以上内容将变为:

import random

random_words = (
    random.choice(str1) + '' +
    random.choice(str2) + '' +
    random.choice(str3) + '' +
    # and so on...
)

让我知道我是否误解了您的问题。

答案 1 :(得分:1)

首先,将您的27个列表设为单个列表。理想情况下,您将以这种方式预先创建它们,但是我假设您只有27个不同变量(yech)的27个列表,并且对此没有控制权。没关系;您可以创建自己的列表,以使其更易于管理。

word_lists = [
    str1, str2, str3, str4, str5, str6, str7, str8, str9,
    str10, str11, str12, str13, str14, str15, str16, str17, str18,
    str19, str20, str21, str22, str23, str24, str25, str26, str27,
]

请注意,您可以将所有内容分解为多行,因为它位于方括号内;只要您有一组开放的括号,括号或花括号,Python便可以让您在下一行继续表达式。

这样做一次,您将不再将所有这些变量放在一个表达式中,这意味着您无需担心超长的代码行。

这是为什么:现在,我们将所有内容都放在一个列表列表中,我们可以在非常短的迭代中构建random_words,而不必再次复制和粘贴27个不同的变量名称:

random_words = ''.join(random.choice(words) for words in word_lists)

答案 2 :(得分:0)

每个pyhton编码器都应该知道PEP-8。对您来说关键的部分是:

为使长文本块具有较少的结构限制(文档字符串或注释),将行长限制为72个字符。
[...]
换行的首选方法是在括号,方括号和花括号内使用Python的隐含行连续性。 可以通过将表达式包装在括号中来将多行换成多行。应优先使用反斜杠以使行连续。

以及它的继续,包括如何以及何时断开行以及如何使用<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> <Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="maxFormKeys">2000</Set> <Set name="maxFormContentSize">211111</Set> </Configure> 作为行的最后一个字符来断开行,如

反斜杠有时仍然合适。例如,长的多个with语句不能使用隐式连续,因此可以使用反斜杠:

\

请确保全部阅读(即使是逐段阅读),因为它包含许多有关如何在python中格式化代码的有价值的信息。

答案 3 :(得分:0)

看到您可以采取艰难的方式,也可以选择明智的方式,

exec()函数用于动态执行Python程序 可以是字符串或目标代码。

这就是我要做的

random_words = ''
for i in range(1,27):
    exec(f'random_words += random.choice(str{i}) + \' \'')

Source