1. ホーム
  2. python

Python:not supported between instances of 'NoneType' and 'int'

2022-02-18 07:45:56
<パス


Pythonの関数の学習中に例にしたがって実行すると、エラーが発生します。

'<=' not supported between instances of 'NoneType' and 'int'


コードは以下の通りです。

# Use filter race to select prime numbers
# Generate prime numbers
def generate_shu():
    n = 1
    while True:
        n = n + 2
        yield n # the correct way to write it
        #yield The wrong way to write


# filter_rule
def filter_rule(n):
    return lambda x: x % n == 0;


# fetch data, filter
def filter_data():
    yield 2 # means first return a 2 but the function will continue to execute

    it = generate_shu()

    while True:
        n = next(it)
        yield n
        it = filter(filter_rule, it)


# test
for n in filter_data():
    if n <= 1000:
        print(n)
    else:
        break



このコードを実行すると、次のようなエラーが報告されます。

'<=' not supported between instances of 'NoneType' and 'int'


filter_data コレクションをトラバースする際に表示されます。 nと1000を比較する際に nが表示されます。 なし タイプ

nの値はfilter_dataで生成され、filter_dataはgenerate_shuで生成されます。

コードを見てみると、generate_shuの戻り値であるyieldは値を返さないことがわかる。

def generate_shu():
    n = 1
    while True:
        n = n + 2
        #yield n #correct way to write
        yield #wrong way to write


ということは、やはり

'<=' not supported between instances of 'NoneType' and 'int'


比較対象がNoneタイプである場合、データの信頼性を分析する。

OKです。