Pythonの関数と変数の型をチェックする

Python は人気のあるプログラミング言語です。グイド・ヴァン・ロッサムによって作成され、1991 年にリリースされました。

1. Python 構文と他のプログラミング言語の比較

  • Python は読みやすさを重視して設計されており、英語との類似点があり、数学の影響を受けています。
  • 通常セミコロンや括弧を使用する他のプログラミング言語とは異なり、Python はコマンドを完成させるために改行を使用します。
  • Python はインデントに依存し、スペースを使用してスコープ (ループ、関数、クラスのスコープなど) を定義します。他のプログラミング言語では、この目的で中かっこを使用することがよくあります。

2. データ型のチェック

2.1 基本型仕様

例えば:

def test(a: int, b: str) -> str:
	print(a, b)
	return 12345	# 返回值类型错误,pycharm解释器会警告

if __name__ == '__main__':
	test(12, "wer")
	test('test', "aaa")	# 错误示例,一般pycharm解释器会警告

上記の関数 test は、入力パラメーター a が int 型、b が str 型、戻り値が srt 型であることを指定します。このメソッドでは、最終的に int が返されたことがわかりますが、この時点で pycharm は警告を出します。このメソッドを呼び出すと、入力したパラメーターは文字列であり、この時点で警告が出されます。しかし、これは非常に重要です 重要なのは、pycharm は警告を発するだけで、実際には実行時にエラーを報告しないということです 結局のところ、Python の本質は依然として動的言語です。

2.2 複合型の指定

from typing import List
Vector = List[float]

def scale(scalar: float, vector: Vector) -> Vector:
    return [scalar * num for num in vector]
    
# 类型检查,将float类型的集合赋值给vector集合
new_vector = scale(2.0, [1.0, -4.2, 5.4])
from typing import Dict, Tuple, Sequence

ConnectionOptions = Dict[str, str]
Address = Tuple[str, int]
Server = Tuple[Address, ConnectionOptions]

def broadcast_message(message: str, servers: Sequence[Server]) -> None:
    pass

# 静态类型检查器将把之前的类型签名视为与这个签名完全等同
def broadcast_message(
        message: str,
        servers: Sequence[Tuple[Tuple[str, int], Dict[str, str]]]) -> None:
    pass

2.3 一般仕様

from typing import Sequence, TypeVar, Union

T = TypeVar('T')

def first(l: Sequence[T]) -> T:
    return l[0]

T = TypeVar('T')  # 可以是任意类型
A = TypeVar('A', str, bytes)  # 必须是str或bytes类型
A = Union[str, None] # 必须是str或None类型

2.4 変数作成時の型指定

from typing import NamedTuple

class Employee(NamedTuple):
    name: str
    id: int = 3

employee = Employee('Guido')
assert employee.id == 3

3. Pythonのデータ型

3.1 組み込みデータ型

タイプ キーワード
テキストタイプ: str
数値型: int、float、複素数
シーケンスタイプ: リスト、タプル、範囲
マッピングの種類: 辞書
コレクションタイプ: セット、フローズンセット
ブール型: ブール
バイナリ型: バイト、bytearray、メモリビュー

3.2 データ型の設定

データの種類
x = 「ハローワールド」 str
x = 29 整数
x = 29.5 浮く
x = 1j 複雑
x = [「リンゴ」、「バナナ」、「サクランボ」] リスト
x = (「リンゴ」、「バナナ」、「チェリー」) タプル
x = 範囲(6) 範囲
x = {“名前” : “請求書”, “年齢” : 63} 辞書
x = {「リンゴ」、「バナナ」、「サクランボ」} 設定
x = frozenset({「リンゴ」、「バナナ」、「チェリー」}) フローズンセット
x = 真 ブール
x = b「こんにちは」 バイト
x = バイト配列(5) バイト配列
x = メモリビュー(バイト(5)) メモリビュー

3.3 特定のデータ型を設定する

データの種類
x = str(“Hello World”) str
x = int(29) 整数
x = float(29.5) 浮く
x = 複素数(1j) 複雑
x = list((「リンゴ」、「バナナ」、「チェリー」)) リスト
x = タプル((「リンゴ」、「バナナ」、「チェリー」)) タプル
x = 範囲(6) 範囲
x = dict(名前=「ビル」、年齢=36) 辞書
x = set((「リンゴ」、「バナナ」、「チェリー」)) 設定
x = フローズンセット((「リンゴ」、「バナナ」、「チェリー」)) フローズンセット
x = ブール(5) ブール
x = バイト(5) バイト
x = バイト配列(5) バイト配列
x = メモリビュー(バイト(5)) メモリビュー

おすすめ

転載: blog.csdn.net/qq_43522889/article/details/130346272