まず、Python とは何でしょうか? Python の作成者である Guido van Rossum によると、Python とは、コードの読みやすさを中核概念として設計され、プログラマーが数行のコードでアイデアを簡単に表現できるようにする高水準プログラミング言語です。実際、私が Python を学ぶことを選んだ最初の理由は、そのプログラミングの優雅さでした。Python でコードを書いてアイデアを表現するのはとても自然に感じられます。 Python は、解釈、コンパイル、インタラクティブ性、オブジェクト指向性を組み合わせた高レベルのスクリプト言語です。 Python は可読性が高くなるよう設計されています。英語のキーワードや他言語の一部句読点を多用する言語に比べ、Python は他言語よりも特徴的な文法構造を持っています。 もう 1 つの理由は、Python はさまざまな方法で記述および使用できることです。データ サイエンス、Web 開発、機械学習はすべて Python を使用できます。 Quora、Pinterest、Spotify はすべて、バックエンド開発言語として Python を使用しています。 基礎 変数 簡単に言えば、変数は値を格納する単語と考えることができます。 Python では、変数を定義して値を割り当てるのは非常に簡単です。変数「one」に 1 を格納するとします。
簡単です。変数「one」に 1 を割り当てるだけです。
また、任意の変数に任意の値を割り当てることができます。上記のように、整数 2 が変数「two」に割り当てられ、10,000 が変数「some_number」に割り当てられます。整数に加えて、ブール演算、文字列、浮動小数点数、その他のデータ型を割り当てることもできます。
制御フロー: 条件文 「If」ステートメントは、式を true または false に評価します。 true の場合、「If」条件内のサブステートメントが下方向に実行されます。例えば:
2 は 1 より大きいので、「print」コードが実行されます。 「If」式が false の場合、「else」の下のサブステートメントが実行されます。
「elif」ステートメントを使用して実行条件を追加することもできます。
ループ/イテレータ Python では、さまざまな形式の反復処理が可能です。 while と for の 2 つについて説明します。 While ループ: このステートメントが true の場合、次のコードが実行され、1 から 10 までの数字が出力されます。
while ループには「ループ条件」が必要です。それが真実であれば、反復を続けます。上記の例では、num が 11 の場合、ループ条件は false となり、ループが終了します。 次のコードは、これをよりよく理解するのに役立ちます。
ループ条件が true の場合、false になるまで繰り返し処理が続けられます。 For ループ: ループするコード ブロック内で変数「num」を使用すると、「for」ステートメントによってその変数が自動的に反復処理されます。このコードは while コードと同じものを出力します (1 から 10 まで)。
ほら、とても簡単ですよ。範囲は 1 から 11 番目の要素までです (10 は 10 番目の要素です)。さらに、数値を直接指定すると、For ループは 0 からその数値 (含まれない) まで反復します。たとえば、次の For ループは 0 から 9 を出力します。
リスト: 配列データ構造 リストは、一連の値(必要な整数など)を格納するために使用できる配列またはコレクションです。では、これを使用しましょう:
上記のように、配列を作成し、それを my_integers 変数に割り当てました。以下に示すように、配列内の値はインデックスを通じて取得できます。配列の最初の要素のインデックスは 0、2 番目の要素のインデックスは 1 というようになります。 次の文を使うとよりよく理解できるかもしれません。
同様に、リスト要素の型も文字型にすることができます。次のように、要素が文字であるリストを作成します。
リストの定義とインデックスの使い方を学んだので、リスト データ構造に要素を追加する方法を学びましょう。リストに要素を追加する最も一般的な方法は、追加することです。
append メソッドは非常にシンプルで、リストの末尾に追加したい要素にこのメソッドを適用するだけです。 辞書: キー値データ構造 リストは要素を取得するために整数インデックスを使用することはすでにわかっていますが、インデックスとして整数を使用したくない場合は、辞書データ構造を使用できます。このデータ構造では、数値、文字、またはその他のタイプのインデックスを使用できます。辞書内の各キー=>値のペアはコロン (**:**) で区切られ、各ペアはコンマ (**,**) で区切られ、辞書全体は中括弧 (**{})** で囲まれます。以下に示すように、辞書はキーと値のコレクションです。
キーは対応する値を指すインデックスであり、対応する要素の値にアクセスするにはキーを使用する必要があります。
上記は、4 つのキーと対応する値が定義された辞書を作成します。print 関数は、辞書のキーを使用して対応する値を取得します。また、辞書の値には任意のタイプのデータを使用できます。以下では、文字キーと数値を持つキーと値のペアを追加します。
次に、辞書に要素を追加する方法を理解する必要があります。実際、辞書の本質は、特定の値を指すキーワードのコレクションです。したがって、辞書内のキーワード(存在しない場合もあります)に直接値を割り当てて、キーと値のペアを変更または追加することができます。
反復: データ構造内のループ リスト ループも非常にシンプルです。ループ内でリストを変更したり出力したりできます。次のように、リストから要素を 1 つずつ抽出するために For ループがよく使用されます。
ハッシュ データ構造の場合、辞書内のキーと For ループを使用して、キーと対応する値を順番に読み取ることもできます。
iteritems メソッドを使用しても同じ効果が得られます。
2 つのパラメータに key と value という名前を付けましたが、別の名前を付けることもできます。以下に示すように、 attribute と value を辞書のキー パラメータとして使用し、同じように機能します。
高度な クラスとオブジェクト オブジェクトは、犬、猫、自転車など、現実世界のターゲットを表します。一般的に、オブジェクトにはデータと動作という 2 つの特性があります。オブジェクト「車両」には、車輪の数、ドアの数、容量などのデータがあります。また、車両が加速したり、ブレーキをかけたり、燃料使用量を表示したりできるなどの動作もあります。 オブジェクト指向プログラミングでは、データを属性として、動作をメソッドとして表現します。 クラスは独立したオブジェクトを作成するための設計図です。現実の世界では、同じ種類のオブジェクトが数多く存在することがよくあります。例えば、同じモデルの車両には、エンジン、ホイール、シートなどの部品があり、各車両は同じ設計図に従って製造され、同じ部品が搭載されています。 したがって、オブジェクトは客観的なものの抽象化であり、クラスはオブジェクトの抽象化です。オブジェクトはクラスのインスタンスであり、クラスはオブジェクトのテンプレートです。 Python はオブジェクト指向プログラミング言語なので、クラスとオブジェクトの概念もあります。 Python オブジェクト指向プログラミングのケースを理解する前に、オブジェクト指向プログラミングの基本的な概念を理解しておく必要があります。
まず、宣言を通じてクラスを定義するステートメントを見てみましょう。
ターゲットはクラスのインスタンスであり、クラスの名前を使用してインスタンスを作成できます。
上記のように、 car は Vehicle クラスのオブジェクトまたはインスタンスです。 車両クラスに、車輪の数、エネルギー貯蔵タイプ、座席数、最高速度という 4 つのプロパティがある場合は、車両クラスを作成するときにこれらのプロパティを設定できます。次に、クラスが初期化されるときに受け入れるデータを定義します。 self はクラスのインスタンスを表します。クラス メソッドを定義するときは self が必要ですが、それを呼び出すときに対応するパラメーターを渡す必要はありません。
__init__() メソッドは、クラス コンストラクターまたは初期化メソッドと呼ばれる特別なメソッドで、これらの属性を定義するために車両クラスのインスタンスが作成されるときに呼び出されます。 Tesla Model S のオブジェクトを作成する場合、4 つの車輪、電動駆動、4 つの座席、最高速度 250 km/時という特性に基づいてオブジェクトを作成できます。
すべてのプロパティが設定されましたが、その値にアクセスするにはどうすればよいでしょうか。オブジェクトに情報を送信するプロセスをメソッドと呼びます。これはオブジェクトの動作です。
上記のステートメントは、number_of_wheels と set_number_of_wheels の 2 つのメソッドを実装します。最初のメソッドはプロパティ値を取得し、2 番目のメソッドはプロパティに新しい値を設定するため、これを getter と setter と呼ぶことができます。クラス内では、def キーワードを使用してクラスのメソッドを定義します。一般的な関数定義とは異なり、クラス メソッドには最初のパラメーターであるパラメーター self を含める必要があります。 Python では、@property (デコレータ) を使用してゲッターとセッターを定義できます。
これらのメソッドを属性として使用することもできます。
これは、メソッドを属性として定義することとは少し異なります。上記のように、新しい車輪の数を設定するときに、パラメータとして「2」を設定する必要はなく、代わりに number_of_wheels の値を 2 に設定します。 メソッドを使用して他の操作を実行することもできます。たとえば、メソッド「make_noise」は次のように設定できます。
このメソッドを呼び出すと、文字列「VRRRRUUUUM」が返されます。
カプセル化: 情報を隠す カプセル化は、ターゲットのプロパティとメソッドへの直接アクセスを制限するメカニズムですが、同時にデータ (オブジェクト メソッド) に対する操作を容易にします。 カプセル化は、抽象関数インターフェースの実装の詳細をパッケージ化して隠す方法です。同時に、これは外部の呼び出し元がオブジェクトの内部実装の詳細にアクセスするのを防ぐ手段でもあります。この手段はプログラミング言語自体によって提供されます。 オブジェクトのすべての内部表現は外部から隠されており、オブジェクトのみが内部データと直接対話できます。まず、パブリックおよびプライベート (非パブリック) のインスタンス変数とメソッドを理解する必要があります。 パブリックインスタンス変数 Python クラスの場合、コンストラクター メソッドを使用してパブリック インスタンス変数を初期化できます。
次に、first_name の値をパブリックインスタンス変数の引数として使用します。
カテゴリ内:
これで first_name に値を割り当てる必要がなくなり、tk に割り当てられたすべてのオブジェクトにクラス属性が設定されます。
これで、パブリック インスタンス変数とクラス属性の使用方法を学習しました。さらに、パブリック部分の変数値を管理することもできます。つまり、オブジェクトはその変数の値(変数値の取得と設定)を管理できます。 Person クラスを保持したまま、 first_name 変数に別の値を割り当てます。
上記のように、first_nameインスタンス変数に別の値(kaio)を割り当てます。これはパブリック変数なので、変数値が更新されます。 プライベートインスタンス変数 パブリック インスタンス変数と同様に、コンストラクター メソッドを使用するか、クラス内で宣言することで、プライベート インスタンス変数を定義できます。構文上の違いは、プライベート インスタンス変数では変数名の前にアンダースコアが付くことです。
上記で定義されたメール変数はプライベート変数です。
アクセスして更新することはできますが、プライベート変数は API の非公開部分として考慮する必要があるという単なる慣例です。したがって、2 つのメソッドを使用してプライベート インスタンスの値を表示し、インスタンスの値を更新するなど、メソッドを使用してクラス定義内の操作を完了できます。
これで、メソッドを使用してプライベート変数を更新またはアクセスできるようになりました。
まず、Person クラスを初期化して値を割り当て、次に定義されたメソッドを通じてプライベート変数の値にアクセスして出力します。プライベート変数に新しい値を直接割り当てた場合、出力される値は元の値のままになります。プライベート変数を更新するには、クラスで定義されたメソッドを操作する必要があります。 パブリックメソッド パブリック メソッドの場合は、クラス外から呼び出すこともできます。次のコードは、クラスとメソッドを定義します。
このメソッドをテストしてみましょう:
プライベートメソッド しかし、これはプライベートメソッドでは不可能です。同じクラスを定義し、アンダースコアを使用して show_age をプライベート メソッドとして定義すると、次のようになります。
オブジェクトのプライベート メソッドを呼び出すこともできます。
アクセスして更新することもできますが、プライベート メソッドは API のプライベート部分として考慮する必要があります。次の例はその使用方法を示しています。
上記のように、プライベート メソッド _get_age とパブリック メソッド show_age を宣言しました。 show_age メソッドはクラス外から呼び出すことができますが、_get_age メソッドはクラス内からのみ使用できます。 パッケージ概要 プログラムをカプセル化することで、オブジェクトの内部表現が外部から隠されることが保証されます。オブジェクト指向プログラミングの主な利点の 1 つはコードの再利用であり、この再利用を実現する方法の 1 つは継承です。継承は、クラス間の型とサブタイプの関係として完全に理解できます。 車があり、車輪の数、座席数、最高速度がわかっている場合、 Electric Car クラスは通常の Car クラスと同じプロパティを継承します。
クラス内のオブジェクトを更新します。
オブジェクトを初期化した後、Python は親クラスを子クラスのパラメータとして適用できます。したがって、Electric Car クラスは Car クラスからオブジェクトを継承できます。
ElectricCar クラスはすでに Car クラスからオブジェクトを継承しているので、他のメソッドを実装する必要はありません。
|
<<: 人工知能はあなたよりも多くの XXX スターを知っている
>>: 機械学習は、モノのインターネットの発展に欠かせない未来となるだろう
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
モノのインターネット(IoT)はどこにでもあります。実際、ここ数年、スマート製造、サプライ チェーン...
序文みなさんこんにちは。私はカタツムリを採っている小さな男の子です。 LeetCode を練習してい...
この記事では、次の内容を学びます。 輻輳制御の概念とその背景 フロー制御と輻輳制御の違いと関係 輻輳...
自動化されたセキュリティの将来には機械学習が関与するでしょう。人工知能と機械学習の進歩により、ロボッ...
[[425896]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...
[[431318]] 10月21日の夜、ついにPyTorch 1.10がリリースされました!このアッ...
前回の記事では、KMPアルゴリズムを紹介しました。ただし、これは最も効率的なアルゴリズムではなく、実...
近年、機械学習ほどモノのインターネットの急速な成長を牽引したものはほとんどありません。人間の創造性を...
現在、世界の注目は5Gに集中しているが、人工知能の発展も軽視できない。わが国では、継続的な優遇政策の...
医療画像のインテリジェント認識:医療とAIを組み合わせた成功事例医療画像認識はAIがすぐに導入できる...
<!-- /* Style Definitions */ p.MsoNormal, li.M...