[解決済み] タイピングからリスト/タプル/等を使用する場合と、リスト/タプル/等として直接型を参照する場合について
質問
を使用することの違いは何ですか?
List
,
Tuple
などから
typing
モジュールになります。
from typing import Tuple
def f(points: Tuple):
return map(do_stuff, points)
Pythonの型を直接参照するのとは対照的です。
def f(points: tuple):
return map(do_stuff, points)
また、どのような場合にどちらを使うべきでしょうか?
どのように解決するのですか?
Python 3.9まで
標準的なコレクションを使用したタイプヒンティングのサポートが追加されました。
を使用する必要がありました。
typing.Tuple
と
typing.List
がどのような型であるかを文書化したい場合
コンテンツ
のコンテナである必要がある。
def f(points: Tuple[float, float]):
return map(do_stuff, points)
Python 3.8まで。
tuple
と
list
であることをサポートしていませんでした。
として使用されます。
汎用タイプ
. 上記の例では、関数
f
を必要とします。
points
の2つのタプルである必要があります。
float
の値を指定します。
typing.Tuple
は、予想される要素数と各位置のタイプを指定できるという点で、ここでは特別なものです。長さを設定せず、型を繰り返し指定する場合は省略記号を使用します。
Tuple[float, ...]
は、可変長の
tuple
と
float
s.
について
typing.List
などのシーケンス型は、一般にすべての要素に対して型を指定するだけです。
List[str]
は文字列のリストで、大きさは問わない。なお,関数は優先的に
typing.Sequence
を引数とし
typing.List
は通常、戻り値の型にのみ使用されます。一般的にほとんどの関数は任意のシーケンスを受け取り、反復処理のみを行いますが
list
ということは、特定の、変更可能なシーケンスタイプを返していることになります。
Python 3.8 以前のコードをまだサポートする必要がある場合は、常に
typing
ジェネリックスを使用します。ジェネリック型で後から制約を追加する方が、結果的に変更が少なくて済むからです。
カスタムコンテナ型を実装していて、その型がジェネリックをサポートするようにしたい場合
を実装します。
__class_getitem__
フック
を継承するか
typing.Generic
(を実装している)。
__class_getitem__
).
関連
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み] リストからランダムに項目を選択するにはどうすればよいですか?
-
[解決済み] インデックスを指定してリストから要素を削除する方法
-
[解決済み] 億の相対的輸入
-
[解決済み] Pythonでリストをタプルに変換する
-
[解決済み] モジュール名を文字列で指定してインポートするには?
-
[解決済み] Pythonのexit()とsys.exit()の違いについて
-
[解決済み] タイプヒンティングを使用しているとき、関数にデフォルトのパラメータを追加するにはどうすればよいですか?
-
[解決済み] タイプヒントを使用して複数の戻り値の型を指定する方法
-
[解決済み】Pandas DataFrameのカラムヘッダからリストを取得する。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
opencvとpillowを用いた顔認証システム(デモあり)
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
任意波形を生成してtxtで保存するためのPython実装
-
Pythonショートビデオクローラーチュートリアル
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み] typing.Dictとdictの定義の違い?