問題タブ [functools]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1688 参照

python - クラス構造内で functools.partial を使用すると、「name 'self' が定義されていません」

以下は、私のコードを大幅に簡略化したバージョンです。その後、__init__()いくつかの機能があります。

クラスで以前に作成された関数を参照するfunctools.partial基本関数のさまざまなバージョンを作成するために使用しようとしています。この比較関数の 1 つのバージョンを以下に示します。comparisoncalculationgrade_comparison

コードを実行すると、エラーが発生しますNameError: global name 'self' is not definedself論理的と思われる多くの組み合わせを追加しようとしました - 以下にその一例を示します。

この変更によりNameError: name 'self' is not defined 、比較関数に self を追加すると、次のエラーが発生しました (以下を参照)。

このエラーが表示されますTypeError: comparison() takes at least 2 arguments (1 given)。さらにコンテキストが必要な場合はお知らせください。前述のとおり、これはコードの要点です。

0 投票する
1 に答える
1678 参照

python - python functools partial での引数の順序

関数の実行を高速化するためにマルチプロセッシングを使用しようとしてpool.mapいますが、イテラブルはその関数の最初の引数ではありません。ピクル可能ではないため、ラムダは機能しません。functools.partialを使用して新しい関数を作成しようとしましたが、 TypeError. 以下は、同じ結果の非常に単純な例です。引数の順序を に切り替えると、f(i, s1, s2)期待どおりに機能します。

ここで引数の順序が重要なのはなぜですか? 私がドキュメントを読んだとき、それは私には明らかではありません。

私のオプションは何ですか (元の機能を変更するという明らかな以外に)?

更新:私が考えることができる最善の方法は、モジュールレベルでラッパーを作成して引数の順序を切り替え、次にラッパーから部分的に切り替えることです。きれいに見えないか、まったくパイソンのように見えません。

0 投票する
3 に答える
8702 参照

python - デコレータを使用した実行時間のロギング

しばらく失敗した後、この奇跡的な Web サイトに助けを求めています。今私の問題のために:関数の実行経過時間(関数の実行)を次のようなログファイルに書き込むデコレータを作成したいと思います。

それlog.txtは次のようになります

何か案は?

0 投票する
1 に答える
4435 参照

python - Python マルチプロセッシング - functools.partial を使用するとデフォルトの引数よりも遅いのはなぜですか?

次の関数を検討してください。

を使用するmultiprocessing.Pool.imapと、次のタイミングが得られます。

functools.partialデフォルト値を使用する代わりに使用すると、次のようになります。

バージョンの使用functools.partialが非常に遅いのはなぜですか?

0 投票する
1 に答える
997 参照

python - LRU キャッシュが同じ引数でミスするのはなぜですか?

次のようなコードがあります。

cache_info()は、 2 つのミスがあったことを報告していますが、同じ引数で関数を呼び出しました。

実際には少し手間がかかりましたが、あるインスタンスではキーワード arg を使用し、別のインスタンスでは位置引数を使用していたためであることがわかりました。

しかし、なぜですか?

0 投票する
2 に答える
498 参照

python - lru_cache をファイルにダンプし、メモリ内に再度ロードする

functoolsのパッケージ内には、関数呼び出しをメモ化するデコレータがPython3あります。lru_cache()

このキャッシュをファイルにダンプし、後でそのファイルをインメモリにロードする方法はありますか?

functools のドキュメントでこの機能を見つけることができませんでした。できればPythonのみを含むソリューションで、上記の要件を達成するための推奨される方法は何ですか?

0 投票する
1 に答える
1774 参照

python - カスタム クラスに Python コレクションを使用する方法

まだ Python と魔法の関数型プログラミングに戸惑っているので、慣用的な Python ではなく、プログラミングの Java パラダイムに近いコードを書く傾向があります。

私の質問は、Python でカスタム クラスをコレクションにする方法に多少関連しています。

唯一の違いは、(コンポジションを使用して) ネストされたオブジェクトがあることです。VirtualPageオブジェクトは、PhysicalPage オブジェクトのリストで構成されていますPhyscialPageオブジェクトのリストを取り、すべての詳細を結合して、 PageBoundaryと呼ぶ単一の名前付きタプルにする関数があります。本質的には、物理​​ページとページ内の行番号を表す整数範囲で構成されるタプルを吐き出すことができるシリアライゼーション関数です。これから、VirtualPages を互いに簡単に並べ替えて並べ替えることができます (少なくともこれがアイデアです)。

また、タプルという名前のPageBoundaryを取得し、タプルを物理ページのリストに逆シリアル化または展開できる関数もあります。これら 2 つのデータ ストレージ クラスは変更しないことが望ましいです。

これは、私のカスタム python2.7 クラスのスニペットです。これは、オブジェクトPhysicalPageを含む多くのリストで構成されています。

テンプレート化されたコレクション (python collections モジュールから) を活用して、VirtualPageクラスのリストまたはセットとして簡単に並べ替えおよび比較したいと考えています。また、私のデータ ストレージ クラスであるVirtualPagePhysicalPageのレイアウトについてアドバイスをお願いします。

一連のVirtualPagesまたは以下の例のいずれかを指定します。

次のような質問に簡単に答えたいと思います。

すぐに、 VirtualPageクラスが get_cannonical_page_boundaries を呼び出すか、関数自体を実装する必要があることは明らかです。少なくともPhysicalPageリストをループして、必要な関数 ( lt () およびeq ()) を実装する必要があるため、b/w VirtualPagesを比較できます。

1.) 現在、いくつかの比較関数の実装に苦労しています。大きな障害の 1 つは、タプルを比較する方法です。ある種のコレクションを拡張するカスタム クラスを作成して、独自のlt () 関数を作成しますか?

2.) 代わりに、比較関数の実装がVirtualPageクラスに存在する必要がありますか?

私がモデリングしているデータのプロパティには一意性の概念があるため、ある種の Set データ構造に傾いていました。つまり、物理ページの値は重複できず、ある程度リンクされたリストとして機能します。また、@ デコレータ関数を介して実装されたセッターまたはゲッター関数は、ここで役に立ちますか?