方法/函数的Return语句



问这个问题我觉得有点傻,但我正在练习DSA。我在看Youtube视频,我发现奇怪的是,在类的一些方法中,return方法没有返回值。我知道它会返回None,但我不明白代码是如何工作的。

以下是代码片段:

class Node:
def __init__(self, value):
self.value = value
self.next = None
class LinkedList:
def __init__(self):
self.head = None
self.tail = None
def to_list(self):
out = []
node = self.head
while node:
out.append(node.value)
node = node.next
return out
### In the following method is my doubt ###
def prepend(self, value):
""" Prepend a value to the beginning of the list. """
if self.head is None:
self.head = Node(value)
return # Why is this return value left alone without returning anything?

new_head = Node(value)
new_head.next = self.head
self.head = new_head
return # Why is this return value left alone without returning anything?
LinkedList.prepend = prepend

有人能向我解释一下,这段代码在做什么吗?因为据我所知,prepend方法使用2个空返回中的两个None值。

当您想停止函数的进一步执行时,会使用return。第一个是必要的,以便不执行if self.head is None块之后的语句。第二个是不必要的,因为它在函数的末尾,所以函数无论如何都会返回。这只是一种更明确的表达方式;我要回到这里,但什么也不回"。这是任何未显式放入return的函数的默认行为。

在编程语言中,有显式的空白返回是很常见的。例如,在C中,任何返回类型为void的函数都必须使任何return为空。在Python中,有很多内置函数不需要返回任何内容,更不用说可能创建的所有自定义函数了。例如,list.append()返回None;这是Python中的任何函数在没有显式返回任何内容时默认返回的内容。

prepend中的第一个return是早期返回,这是从当前编写的函数中的这一点返回的唯一方法。

第二个返回是完全多余的,可以删除。

这只是一个风格问题,是让函数体隐式地结束返回None,还是写一个裸返回语句,甚至显式地写return None。这些都是返回None:的函数

def a():
pass
def b():
return
def c():
return None

但是,第一种方法不允许您提前返回。这就是为什么在方法的if分支中需要显式返回的原因。否则,控制流将继续并两次预处理相同的值。

末尾的第二个return语句是多余的。

相关内容

  • 没有找到相关文章