検索
ホームページバックエンド開発Python チュートリアルPython プログラミングにおけるデコレーターの使用例の分析

装飾関数とメソッド

まず 2 つの単純な数学関数を定義します。1 つは二乗和を計算する関数、もう 1 つは二乗の差を計算する関数です。

リーリー
基本的な数学関数を用意した後、入力の出力など、他の関数を関数に追加することもできます。これを実現するために関数を書き直すことができます:

リーリー
関数の定義を修正し、関数に関数を追加しました。

ここで、デコレーターを使用して上記の変更を実装します。

リーリー
デコレーターは、上記のコードのデコレーターなど、def の形式で定義できます。デコレーターは、呼び出し可能オブジェクトを入力パラメーターとして受け取り、新しい呼び出し可能オブジェクトを返します。デコレータは、上記の new_F である新しい呼び出し可能オブジェクトを作成します。 new_F では、印刷関数を追加し、F(a, b) を呼び出すことで元の関数の機能を実装しました。

デコレータを定義した後、@ 構文を通じてそれを使用できます。関数 square_sum および square_diff が定義される前に @decorator を呼び出すことにより、実際には square_sum または square_diff をデコレーターに渡し、デコレーターによって返された新しい呼び出し可能オブジェクトを元の関数名 (square_sum または square_diff) に割り当てます。 したがって、 square_sum(3, 4) を呼び出すと、次と同等になります:

リーリー
Python では変数名とオブジェクトが分離されていることはわかっています。変数名は任意のオブジェクトを指すことができます。本質的に、デコレーターは変数名を再ポイントする役割 (名前バインディング) を果たし、同じ変数名が新しく返された呼び出し可能オブジェクトをポイントできるようにし、それによって呼び出し可能オブジェクトを変更するという目的を達成します。

関数の処理と同様に、デコレータを使用してクラスメソッドを処理できます。

他にも同様の関数がある場合は、関数を繰り返し変更したり、新しいパッケージを追加したりすることなく、引き続きデコレーターを呼び出して関数を変更できます。これにより、プログラムの再利用性が向上し、可読性が向上します。

高麗人参のデコレーション

@decorator などの上記のデコレーター呼び出しでは、デコレーターはデフォルトで唯一のパラメーターとして後続の関数になります。デコレータの構文を使用すると、デコレータを呼び出すときに @decorator(a) などの他のパラメータを指定できます。これにより、デコレータの作成と使用における柔軟性が向上します。

リーリー
上記の pre_str はパラメータを許可するデコレータです。これは実際には元のデコレータをカプセル化した関数であり、デコレータを返します。これは、環境パラメータを含むクロージャとして理解できます。 @pre_str('^_^') を使用して呼び出すと、Python はこのカプセル化層を検出し、パラメータをデコレータ環境に渡すことができます。この呼び出しは次と同等です:

リーリー

デコレーション

上記の例では、デコレータは関数を受け取り、関数を返すため、関数を処理する効果があります。 Python 2.6 以降、デコレータはクラスに拡張されました。デコレータはクラスを受け取ってクラスを返すことができるため、クラスを処理する効果があります。

リーリー
デコレータでは、新しいクラス newClass を返します。新しいクラスでは、元のクラスによって生成されたオブジェクト (self.wrapped) を記録し、display が呼び出された回数を記録するための新しい属性 total_display をアタッチします。同時に表示方法も変更しました。

変更を加えると、Bird クラスはディスプレイが呼び出された回数を表示できるようになります。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Python vs. C:比較されたアプリケーションとユースケースPython vs. C:比較されたアプリケーションとユースケースApr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間のPython計画:現実的なアプローチ2時間のPython計画:現実的なアプローチApr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:主要なアプリケーションの調査Python:主要なアプリケーションの調査Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間でどのくらいのPythonを学ぶことができますか?2時間でどのくらいのPythonを学ぶことができますか?Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Apr 02, 2025 am 07:12 AM

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...

風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの精度を改善する方法は?風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの精度を改善する方法は?Apr 02, 2025 am 07:09 AM

風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの問題を解決する方法は?風光明媚なスポットコメントと分析を行っているとき、私たちはしばしばJieba Wordセグメンテーションツールを使用してテキストを処理します...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。