Python での functools モジュール関数分析について
この記事では主に
Pythonのfunctoolsモジュール関数の解析を紹介し、それぞれfunctools.cmp_to_key、functools.total_ordering、functools.reduce、functools.partial、functools.upについて説明します。 date_wrapper と functools.wraps の使用方法については、必要な友人が参照できます Python に付属の functools モジュールには、一般的に使用される高次関数がいくつか用意されています。これらは、
他の関数を処理するために使用される特別な関数です。つまり、このモジュールを使用して呼び出し可能な オブジェクト を処理できます。
functoolsモジュール関数- functools.cmp_to_key(func)
- functools.total_ordering(cls)
- functools.reduce( function 、反復可能[、初期化子])
- functools.partial(func[, args][, *keywords])
- functools.update_wrapper(wrapper, Wrapper[, assigned][, updated])
- functools.wraps(wrapped[, assigned][ 、更新されました])
構文:
functools.cmp_to_key(func)
functools.cmp_to_key(func)
该函数用于将旧式的比较函数转换为关键字函数。
旧式的比较函数:接收两个参数,返回比较的结果。返回值小于零则前者小于后者,返回值大于零则相反,返回值等于零则两者相等。
关键字函数:接收一个参数,返回其对应的可比较对象。例如 sorted(), min(), max(), heapq.nlargest(), heapq.nsmallest(), itertools.groupby() 都可作为关键字函数。
在 Python 3 中,有很多地方都不再支持旧式的比较函数,此时可以使用 cmp_to_key() 进行转换。
示例:
sorted(iterable, key=cmp_to_key(cmp_func))
functools.total_ordering()
语法:
functools.total_ordering(cls)
这是一个类装饰器,用于自动实现类的比较运算。
我们只需要在类中实现 eq() 方法和以下方法中的任意一个 lt(), le(), gt(), ge(),那么 total_ordering() 就能自动帮我们实现余下的几种比较运算。
示例:
@total_ordering class Student: def eq(self, other): return ((self.lastname.lower(), self.firstname.lower()) == (other.lastname.lower(), other.firstname.lower())) def lt(self, other): return ((self.lastname.lower(), self.firstname.lower()) < (other.lastname.lower(), other.firstname.lower()))
functools.reduce()
语法:
functools.reduce(function, iterable[, initializer])
该函数与 Python 内置的 reduce() 函数相同,主要用于编写兼容 Python 3 的代码。
functools.partial()
语法:
functools.partial(func[, *args][, **keywords])
この関数は、古い比較関数を次のように変換するために使用されます。キーワード機能。
ed()、min()、max()、heapq.nlargest()、heapq nsmall
est()、itertools.groupby() はすべてキーワード関数として使用できます。
Python 3 では、多くの場所で古い比較関数がサポートされなくなりました。現時点では、変換に cmp_to_key() を使用できます。
例:
def partial(func, *args, **keywords): def newfunc(*fargs, **fkeywords): newkeywords = keywords.copy() newkeywords.update(fkeywords) return func(*(args + fargs), **newkeywords) newfunc.func = func newfunc.args = args newfunc.keywords = keywords return newfunc
functools.total_ordering()
構文:
functools.total_ordering(cls)
これは自動実装用のクラスデコレータです。メントクラスの比較オペレーション。
eq() メソッドと、次のメソッド lt()、le()、gt()、ge() のいずれかをクラスに実装するだけで済みます。その後、 total_ordering() が残りのメソッドの実装を自動的に支援します。比較演算。 例:
>>> from functools import partial >>> basetwo = partial(int, base=2) >>> basetwo.doc = 'Convert base 2 string to an int.' >>> basetwo('10010') 18
functools.reduce(function, iterable[,Initializer])
🎜🎜🎜この関数はPython と同じ 組み込みのreduce()関数は同じで、主にPython 3と互換性のあるコードを書くために使用されます。 🎜🎜🎜functools.partial()🎜🎜🎜🎜構文: 🎜🎜functools.partial(func[, *args][, **keywords])
🎜🎜🎜この関数は部分オブジェクトを返します。このオブジェクトを呼び出すことの効果は、関数 func を呼び出して、位置パラメータ args およびキーワード パラメータキーワードを渡すことと同じです。オブジェクトが位置引数を使用して呼び出された場合、これらの引数は args に追加されます。キーワード引数が渡された場合、それらはキーワードに追加されます。 🎜🎜partial() 関数の同等の実装は、おおよそ次のとおりです: 🎜🎜🎜🎜>>> from functools import wraps >>> def my_decorator(f): ... @wraps(f) ... def wrapper(*args, **kwds): ... print 'Calling decorated function' ... return f(*args, **kwds) ... return wrapper >>> @my_decorator ... def example(): ... """Docstring""" ... print 'Called example function' >>> example() Calling decorated function Called example function >>> example.name 'example' >>> example.doc 'Docstring'
该函数主要用于装饰器函数的定义中,置于包装函数之前。如果没有对包装函数进行更新,那么被装饰后的函数所具有的元信息就会变为包装函数的元信息,而不是原函数的元信息。
functools.wraps()
语法:
functools.wraps(wrapped[, assigned][, updated])
wraps() 简化了 update_wrapper() 函数的调用。它等价于 partial(update_wrapper, wrapped=wrapped, assigned, updated=updated)。
示例:
>>> from functools import wraps >>> def my_decorator(f): ... @wraps(f) ... def wrapper(*args, **kwds): ... print 'Calling decorated function' ... return f(*args, **kwds) ... return wrapper >>> @my_decorator ... def example(): ... """Docstring""" ... print 'Called example function' >>> example() Calling decorated function Called example function >>> example.name 'example' >>> example.doc 'Docstring'
如果不使用这个函数,示例中的函数名就会变成 wrapper ,并且原函数 example() 的说明文档(docstring)就会丢失。
以上がPython での functools モジュール関数分析についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

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

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。

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