[解決済み】Python 3でgenerator.next()は表示されますか?
2022-04-16 02:38:05
質問
例えば、シリーズを生成するジェネレータがあるのですが。
def triangle_nums():
'''Generates a series of triangle numbers'''
tn = 0
counter = 1
while True:
tn += counter
yield tn
counter += + 1
Python 2では、次のような呼び出しができるようになりました。
g = triangle_nums() # get the generator
g.next() # get the next value
しかし、Python 3で同じ2行のコードを実行すると、次のようなエラーが発生します。
AttributeError: 'generator' object has no attribute 'next'
しかし、ループイテレータ構文は Python 3 で動作します。
for n in triangle_nums():
if not exit_cond:
do_something()...
Python 3 でのこの動作の違いを説明するものはまだ見つけられませんでした。
解決方法は?
g.next()
にリネームされました。
g.__next__()
. この理由は一貫性です。
__init__()
と
__del__()
はすべてダブルアンダースコア(現在の用語では "dunder")で、そして
.next()
は、その数少ない例外の一つでした。これはPython 3.0で修正されました。[*]
しかし、その代わりに
g.__next__()
を使用します。
next(g)
.
[*] この修正を受けた特別な属性は他にもあります。
func_name
は、現在では
__name__
,
など
関連
-
Pythonによるjieba分割ライブラリ
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピロウズ画像色処理の具体的な活用方法
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python百行で韓服サークルの画像クロールを実現する
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み] データ型が理解できない
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み] Pythonの円形リストイテレータ
-
[解決済み] Pythonでジェネレータ関数から一度に1つの値を取得する方法は?