我有一个名为crawl
的函数,它会返回一个指向网站的链接。然后我做了类似的事情:
found.append(crawl())
(找到一个列表)
只要抓取返回有效链接,这样就可以正常工作,但有时它不会返回任何内容。因此,None
的值会添加到列表中。
所以我的问题是,是否可以从crawl
返回一些不会在列表中添加任何内容的内容?
答案 0 :(得分:10)
在Python中没有任何东西:None
。你必须使用if-condition:
link = crawl()
if link is not None:
found.append(link)
或让crawl
返回一个列表,该列表可以包含一个或零个元素:
found.extend(crawl())
答案 1 :(得分:2)
您可以做的是将列表传递给抓取功能,如果有任何要添加的内容则附加,否则不会。类似的东西:
override func viewWillLayoutSubviews() {
let skView = self.view as! SKView
skView.showsFPS = true
skView.ignoresSiblingOrder = true
var scene = MenuScene(size: skView.bounds.size)
scene.scaleMode = SKSceneScaleMode.AspectFill
skView.presentScene(scene)
}
答案 2 :(得分:1)
这是不可能的。
您可以使用以下代码测试返回的None
。
returned_link = crawl()
if returned_link is not None:
found.append(returned_link)
答案 3 :(得分:1)
如果函数返回,则必须返回一个对象,即使该对象是None
。但是,还有另一个答案被忽略了,那就是提出异常而不是返回None
。
正如其他人所指出的,一种方法是在将返回的对象附加到列表之前检查返回的对象是否为None
:
link = crawl()
if link is not None:
found.append(link)
另一种方法是定义一些例外,可能是WebsiteNotFoundError
,并crawl
执行raise WebsiteNotFoundError
而不是return None
。然后你可以写:
try:
found.append(crawl())
except WebsiteNotFoundError:
pass # or take appropriate action
异常处理方法的优点是,与返回有效链接相比,如果返回None
相对较少,则通常比检查None
更快。根据用途,它可能更具可读性,因为代码自然地解释了函数出了什么问题。