这两个 python 方法有什么区别?
What is the difference between these two python methods?
我是 python 新手。
我有一个 python 方法 returns 递归列表(前面是字符串字典,s 只是包含在前面字典中的字符串)
def path(previous, s):
"Return a list of states that lead to state s, according to the previous dict."
return [] if (s is None) else path(previous, previous[s]) + [s]
我认为这个应该 return 相同的结果
def path(previous, s):
"Return a list of states that lead to state s, according to the previous dict."
if s is None:
return []
else:
path(previous, previous[s]) + [s]
我原以为这两种方法在功能方面完全相同,只是第一种更简洁。但是,当我 运行 第二种方法时,
我收到以下错误:
"TypeError: unsupported operand type(s) for +: 'NoneType' and 'list'"
我做错了什么?
您在第二种方法的 else 分支中缺少 return
语句:
def path(previous, s):
"Return a list of states that lead to state s, according to the previous dict."
if s is None:
return []
else:
return path(previous, previous[s]) + [s]
第一种方法使用三元运算符,其返回值(两个之一)由return
语句返回 ,因此,第二个在两个分支中都需要一个 return
语句。
我是 python 新手。
我有一个 python 方法 returns 递归列表(前面是字符串字典,s 只是包含在前面字典中的字符串)
def path(previous, s):
"Return a list of states that lead to state s, according to the previous dict."
return [] if (s is None) else path(previous, previous[s]) + [s]
我认为这个应该 return 相同的结果
def path(previous, s):
"Return a list of states that lead to state s, according to the previous dict."
if s is None:
return []
else:
path(previous, previous[s]) + [s]
我原以为这两种方法在功能方面完全相同,只是第一种更简洁。但是,当我 运行 第二种方法时,
我收到以下错误:
"TypeError: unsupported operand type(s) for +: 'NoneType' and 'list'"
我做错了什么?
您在第二种方法的 else 分支中缺少 return
语句:
def path(previous, s):
"Return a list of states that lead to state s, according to the previous dict."
if s is None:
return []
else:
return path(previous, previous[s]) + [s]
第一种方法使用三元运算符,其返回值(两个之一)由return
语句返回 ,因此,第二个在两个分支中都需要一个 return
语句。