Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3中max([1,2]]中的a表示a)和max([1,2]中的a表示a)之间的差异_Python_Python 3.x - Fatal编程技术网

Python3中max([1,2]]中的a表示a)和max([1,2]中的a表示a)之间的差异

Python3中max([1,2]]中的a表示a)和max([1,2]中的a表示a)之间的差异,python,python-3.x,Python,Python 3.x,我发现它们都将输出预期结果2 max([1,2]]中的a代表a)是max()+列表理解,一个简单的方法 max(a代表[1,2])是max()+?。它为什么有效?对于[1,2]中的a,我们如何命名结构a 生成器的形式为(A表示[1,2]中的A])。我怀疑(a代表[1,2]中的a])内部max(a代表[1,2]中的a])是一个生成器。但是,如果是这样,为什么可以忽略一对()?从技术上讲,它应该是max((a表示[1,2]中的a)) 谢谢。这实际上是一个生成器表达式。生成器表达式可以使用参数

我发现它们都将输出预期结果
2

  • max([1,2]]中的a代表a)
    max()
    +
    列表理解
    ,一个简单的方法

  • max(a代表[1,2])
    max()
    +
    。它为什么有效?对于[1,2]中的a,我们如何命名结构
    a

生成器的形式为
(A表示[1,2]中的A])
。我怀疑
(a代表[1,2]中的a])
内部
max(a代表[1,2]中的a])
是一个生成器。但是,如果是这样,为什么可以忽略一对
()
?从技术上讲,它应该是
max((a表示[1,2]中的a))


谢谢。

这实际上是一个生成器表达式。生成器表达式可以使用参数列表中的
()
;假设它们是传递给函数的唯一参数。如果有更多参数,它们需要自己的一对括号

您可以通过快速测试来验证这一点:

def func(arg):
    print(type(arg))

func(n for n in range(10))  # Prints <class 'generator'>
def func(arg):
打印(类型(arg))
func(n表示范围(10)中的n))#打印

发件人:

语法要求生成器表达式始终需要直接位于一组括号内,并且两边不能有逗号。[一] 如果函数调用只有一个位置参数,则它可以是不带括号的生成器表达式,但在所有其他情况下都必须将其括起来


如果将
max
替换为
print
,实际上很容易找到它是什么。您的python版本是什么?这似乎是一个从那时起修复的错误:这是否回答了您的问题@nocibambi如果它是一个单参数,那就不是一个bug。@nocibambi这个bug允许多参数调用没有自己的对:“Python 3.5现在正确地引发了一个语法错误,因为生成器表达式如果不是函数的唯一参数,就必须放在括号中。”