問題タブ [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.
python - Python 関数ではありません
マッピングしている RxPy ストリームのハンドラーとして使用できる関数を構築しようとしています。私が持っている関数は、その変数が定義されているスコープ外の変数にアクセスする必要があります。これは、私にとって、ある種のクロージャーを使用する必要があることを意味します。そこで、functools.partial に到達して、1 つの変数を閉じ、ストリームにオブザーバーとして渡すことができる部分関数を返します。
ただし、これを行うと、次の結果になります。
問題を再現するサンプル コードを次に示します。
False
問題は、呼び出し時に部分関数が返されることのようinspect.isfunction
です。
部分関数をこのチェックにパスさせるにはどうすればよいですか? 部分関数を「実際の」関数型に簡単に変換する方法はありますか?
python - 別の関数で引数として渡される関数の引数の受け渡し/変更
奇妙な問題が 1 つあります。それ自体が他の関数の引数として渡される関数の引数を渡したり変更したりしたいです。詳細については、以下のコードを参照してください
そのため、post_processing
メソッドとそのすべてのパラメーターをgeneric_method
使用して my にfunctools's partial
渡し、新しい変数もattrval
post_processing メソッドに渡しました。しかし、もっと望ましいのは、変数をにattr_value
直接渡すか代入することです。y
post_processing
実行時に関数のパラメーターを変更する方法を探していました。私はネットを検索していinspect
て、関数に渡される引数について説明するPythonのライブラリであることがわかりました。このような場合に使用できますか。
python - クラスでpythonデコレータを定義する正しい方法は何ですか?
私が達成したいのは、次のコードが次のようになることです。
- ここ1
- ここ2
- Here3 argOne argTwo
私の __call__ の使用が何らかの形で functools.wraps を破壊しているのではないかと思っています。また、ある時点で引数が失われているようにも見えます。
私が達成しようとしていることは可能ですか?
python - Total_ordering とクラス継承
私が理解していることから、のtotal_ordering
デコレータfunctools
は、順序付けられたクラスから継承されたクラスでうまく機能することが期待されていません.比較関数は既に定義されているため、定義しようとしません。
次の例を参照してください。
<
すべてのテストの中で、オペレーターが関与するテストだけが期待される結果をもたらします。
クラス定義に>
追加することで、同様に機能させることができます。__gt__ = lambda *_ : NotImplemented
一方、__le__
orに同様の定義を追加すると__ge__
、対応するテストは (for __le__
) で失敗します。
これは、これが問題に対処する適切な方法ではないと私に信じさせます.
したがって、質問: total_ordering でクラスを並べ替える適切な方法はありますか?
(はい、私はtotal_ordering
の仕事を手作業で行うのは些細なことだと知っていますし、この例では unordered を定義することもnamedtuple
些細なことだと知っています。)
python - 引数を無視するための Python のパーシャルに相当するもの
のpythonに「対応物」はありfunctools.partial
ますか?
つまり、私が避けたいのは次のように書くことです:
しかし、私が書くときと同じ属性 (keyword-args、nice repr) を保持したいと思います:
それ以外の
このようなものを書くのは非常に簡単であることは知っていますが、引数を無視する標準的な方法がすでにあるのではないかと思っています。
これの一般的なユースケースの 1 つは、Qts のシグナルとスロットです。
python - インスタンスメソッドを使用した Python functools lru_cache: release オブジェクト
functools.lru_cache
メモリをリークせずにクラス内で使用するにはどうすればよいですか?
次の最小限の例ではfoo
、スコープ外になり、リファラー ( 以外lru_cache
) がないにもかかわらず、インスタンスは解放されません。
しかしfoo
、したがってfoo.big
(a BigClass
) はまだ生きている
つまり、Foo
/BigClass
インスタンスはまだメモリ内に存在します。削除してもFoo
( del Foo
)、それらは解放されません。
なぜlru_cache
インスタンスを保持しているのですか? キャッシュは実際のオブジェクトではなくハッシュを使用していませんか?
lru_cache
クラス内で s を使用する推奨される方法は何ですか?
私は 2 つの回避策を知っています: インスタンスごとのキャッシュを使用するか、キャッシュがオブジェクトを無視するようにします(ただし、間違った結果につながる可能性があります)。
python - 独自の純粋な Python impl よりも functools をインポートする利点は?
私はこのコードを見つけて疑問に思い始めました。単純にインポートを独自の実装に置き換えてみませんか? functools.partial を使用する (パフォーマンス) 利点はありますか? 純粋な Python またはネイティブ コードで実装されていますか?