在matplotlib示例的 animate_decay.py 中, return 语句与尾随逗号一起使用,如下所示:
return line,
,该函数是正常函数,不是生成函数。
所以,我写了两个版本的同一个函数,一个是尾随逗号而另一个没有一个:
def no_trailing_comma(x):
return x + [10]
def trailing_comma(x):
return x + [10],
data = [1, 2, 3]
print("With trailing comma", trailing_comma(data))
print("With no trailing comma", no_trailing_comma(data))
在任何一种情况下,输出都是相同的:
使用尾随逗号[1,2,3,10]
没有逗号[1,2,3,10]
语言规范(Python 3.6)没有特别提及return语句中的尾随逗号。我错过了什么吗?
答案 0 :(得分:2)
基本上在return语句后面放一个逗号会将您返回的参数强制转换为包含该参数的元组。它根本不会影响参数的值,而是如何打包它。使用示例函数
def no_trailing_comma(x):
return x + [10]
def trailing_comma(x):
return x + [10],
data = [1, 2, 3]
no_comma_value = no_trailing_comma(data)
comma_value = trailing_comma(data)
print("The return type is", type(no_comma_value))
print("The return type is", type(comma_value))
此代码将产生:
The return type is <class 'list'>
The return type is <class 'tuple'>
你应该已经看到了打印输出的差异(即一个在元组中),但这可能是我还不知道的3.6件事。