0

我通过使用这个Onelineizer错误地对一段代码进行了单行化,现在我正试图使其成为多行。

(lambda __after: [__after() for self.argv.domain in [(parsed_url.netloc)]][0] if parsed_url.netloc and not self.argv.domain else __after())(lambda: None)

self.argv parser.parse_url()来自 argparse 和 parsed_url 是from urllib.parse import urlparse; parsed_url = urlparse(someurl). 我认为代码可能是这样写的:

if parsed_url.netloc and not self.argv.domain:
  something

我无法推断出更多,有人可以帮我让它再次可读。另外,__after()不是我定义的功能,它是由该工具添加的。

4

1 回答 1

2

Onelinerizer 使用列表推导来翻译赋值语句:

[__after() for self.arg.domain in [(parsed_url.netloc)]][0]

相当于:

self.arg.domain = parsed_url.netloc
__after()

所以你的整行相当于:

if parsed_url.netloc and not self.argv.domain:
    self.arg.domain = parsed_url.netloc
于 2020-10-21T00:03:11.087 回答