2017-06-25 32 views
0

我使用PyCharm來實現一個旨在生成素數的程序。像這樣的代碼:如何在調試python項目時檢查由generator生成的元素?

def _odd_iter(): 
    n = 1 
    while True: 
     yield n 
     n = n + 2 


def _not_divisible(n): 
    return lambda x: x % n > 0 


def primes(): 
    it = _odd_iter() 
    yield 2 
    while True: 
     i = next(it) 
     yield i 
     it = filter(_not_divisible, it) # !!!!!!!!!!don't know how it works!!!!!!!!!! 

for n in primes(): 
    if n < 1000: 
     print(n) 
    else: 
     break 

對我來說,註釋的代碼是模糊的,我不知道它是如何工作的,以及它是否是正確的,所以我就可以添加一個斷點,並確定調試。但它是一個發電機,我看不到詳細的數字。我能做什麼?

+0

你不需要調試器。只需在primes()中輸入p:print p'。建議你爲'p'添加一個'break'語句變得比1000更大,否則它將永遠持續下去。 – Elmex80s

+0

您可以評估表達式和「列表(它)」。 –

回答

1

filter(function or None, iterable) - >濾鏡對象

返回一個迭代得到可迭代的那些項目爲其function(item)是真實的。如果功能是None,則返回正確的項目。

你看不到的細節,因爲它返回一個迭代的對象,這樣做是爲了看看它返回:

it = list(filter(_not_divisible, it)) # or next(filter(...)) 
相關問題