下面的python代码返回什么数据类型?

下面的python代码返回什么数据类型?,python,Python,在下面的python代码中,函数bruteforce_list返回什么类型 我从未见过for循环以这种方式在join候选者之后使用。我对python非常陌生,希望您能给我一个全面的解释。一般来说,在python中,您可以使用type函数显示变量的类型。 所以,试着在你的循环打印类型i中做一些类似的事情,这会让你简单地了解i是什么。正如@Mad physicast所说,它返回一个生成器表达式 创建生成器表达式的语法与列表理解的语法相同,只是列表理解使用方括号 生成器表达式采用一般形式: itera

在下面的python代码中,函数bruteforce_list返回什么类型


我从未见过for循环以这种方式在join候选者之后使用。我对python非常陌生,希望您能给我一个全面的解释。

一般来说,在python中,您可以使用type函数显示变量的类型。
所以,试着在你的循环打印类型i中做一些类似的事情,这会让你简单地了解i是什么。

正如@Mad physicast所说,它返回一个生成器表达式

创建生成器表达式的语法与列表理解的语法相同,只是列表理解使用方括号

生成器表达式采用一般形式:

iterable中变量的表达式

您可以选择包括以下条件:

iterable if条件中变量的表达式

最后,您可以有多个for子句:

iterable_a中变量_a的表达式iterable_b中变量_b的表达式


生成器表达式不会一次具体化每个元素;相反,您可以迭代生成器,一次获取一个元素。当您希望避免在内存中保存大型集合时,这可能非常有效。

这是一个。因此,从逻辑上讲,它相当于在某个地方生成yield命令的某些代码。作为一个初学者,你很难理解它。
import paramiko, sys, os, socket, threading, time
import itertools,string,crypt

PASS_SIZE = 5

def bruteforce_list(charset, maxlength):
    return (''.join(candidate)
        for candidate in itertools.chain.from_iterable(itertools.product(charset, repeat=i)
        for i in range(1, maxlength + 1)))

letters_list = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQSTUVWXYZ1234567890!@#$&()'

for i in bruteforce_list(letters_list, PASS_SIZE):
     print i