問題タブ [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 に答える
212 参照

python - itertools.groupby に渡される keyfunc に引数を渡すにはどうすればよいですか?

それで!

を使用した関数は次のitertoos.groupbyとおりです。

現在、出力は次のようになります。

ご覧のとおり、連続する区切り記号は 1 つの文字列に連結されます。この動作をオプションにしたいのですが (関数へのパラメーターで示されるようにsepcat)、ここで障害にぶつかります... にパラメーターを渡すにはどうすればよいseparators.getですか?

functoolsここで私を助けることができますか?

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

python - f(x)をf(*x)に変換する標準のPythonラッパー?

次のラッパーのユースケースに出くわします。

標準の Python 2 ライブラリに既にこれを行っているものはありますか? で調べましたがfunctools、何も見つかりませんでした。

コンテキストとして、最近の使用例を次に示します。

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

python - functools.wrapsでは、Python3のクラスで関数をラップできません

ファイルを最初の引数として取るいくつかの関数のデコレータを書きたいと思います。デコレータはコンテキストマネージャプロトコルを実装する必要があるため(つまり、ラップされた関数をコンテキストマネージャに変換する)、関数をクラスでラップする必要があると考えました。

私はデコレータパターンの経験があまりなく、これまでコンテキストマネージャを実装したことはありませんが、私が書いたものはPython 2.7で機能し、コメントアウトするとPython3.3でも機能しwrapsます。

行のコメントを解除するときに発生するエラーは、次のwraps内部で発生しますupdate_wrapper

このようなクラスで関数をラップするために使用できるとドキュメントに記載されていないことは知っていますがfunctools.wraps、Python 2でも機能します。このトレースバックが正確に何を示しているのか、何をすべきかを誰かに説明してもらえますか?wrapsPythonの両方のバージョンでの効果を達成するには?


編集:私は間違っていた。上記のコードは、私が望んでいることを実行しません。ビルトインのように、の有無にかかわらず関数使用できるようにしたいと思います。 withopen

上記のコードは、装飾された関数をコンテキストマネージャーに変換します。私ができるようになりたい:

と同様

したがって、私のバージョンのコードは、おそらく次のようになります。

私が見落としたものについては、遠慮なくコメントしてください。

:JFセバスティアンによるクラスバージョンは、次のように機能するようです。

基本的wrapsにクラスからを削除し、次のように変更return CManagerしました。

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

python - itertools.accumulate() 対 functools.reduce()

Python 3.3 ではitertools.accumulate()、通常、提供された iterable に加算演算を繰り返し適用する が、関数の引数をパラメーターとして受け取ることができるようになりました。これは、 と重なっているということfunctools.reduce()です。大雑把に見ると、現在の 2 つの主な違いは次のようになります。

  1. accumulate()デフォルトは合計ですが、追加の初期条件を明示的にreduce()指定することはできませんが、どのメソッドもデフォルトではありませんが、1/0 要素シーケンスで使用するための初期条件を指定できます。
  2. accumulate()最初に iterable をreduce()取り、最初に関数を取ります。

2つの間に他に違いはありますか?それとも、最初は別々の用途で使用されていた 2 つの関数の動作の問題であり、時間の経過とともに収束し始めているのでしょうか?

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

python - functools.partialでトレースする

traceモジュールを使用してコードの実行をトレースするプロジェクトに取り組んでいます。
を呼び出すときはtrace.Trace(args).run(stuff)stuffコードオブジェクトまたは文字列のいずれかである必要があります。

今のところ、を呼び出して呼び出す関数を作成していますfunctools.partial。この部分は、私が必要としているとおりに機能します。

ただし、トレース部分に到達すると、functools.partialオブジェクトを使用してトレースを実行できません。myFuncToolsPartialObject.func.func_name(args)関数がローカルスコープにインポートされることを保証できないため、使用できません。インポートを呼び出すことでこれを回避できますが、現時点では回避したいと思います(個人的な好みと呼びましょう)。

functools.partialトレースを適切に呼び出すために、オブジェクトをコードオブジェクトに変換する方法はありますか?

私は求めることができることを知っていmyFuncToolsPartialObject.func.func_codeますが、必要な引数でそれを呼び出す方法がわかりません

0 投票する
7 に答える
185828 参照

python - functools partial はどのように機能しますか?

functools でパーシャルがどのように機能するかについて頭を悩ませることができません。私はここから次のコードを持っています:

今列に並んでいます

どの引数を渡しても、どちらがieを返すかについてincr渡されることがyわかります。lambdasum(1, y)1 + y

という事は承知しています。しかし、私はこれを理解していませんでしたincr2(4)

部分関数のようにget はどのよう4に渡されますか? x私にとっては4sum2. xとの関係は4

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

python - Python の検索置換リストの itertools または functools

特定のより良い文字列に置き換えたい無効な文字列のセットがあります。functools と itertools で遊んでいて、これらを問題に適用したいと思っていますが、少し行き詰まっています。ここに私が持っているものがあります:

mylist 内の各文字列、replacements 内の各置換、string.replace(replacement[0],replacement[1]) のような関数アルゴリズムが必要です。

頭に浮かんだのは、次のようなものでした...

しかし、最初は追加の引数が必要で、2 番目のリスト オブジェクトには属性 replace がありません。これを解決するための洗練された機能的な方法はありますか?

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

python - pyqt タイマーが値またはエラーを返さない

pyqt でタイマーを使用しようとしています。以下にコードを示しますが、何も出力されず、エラーも発生しません。誰が何が悪いのか知っていますか?
ありがとう

編集の更新:

したがって、これは私が使用している完全なコードの抜粋です。これはもう少し複雑で、別の問題かもしれませんが、結果は同じです。

構造は次のようになります。

私の目標は、ボタンをクリックして再生することです。特定の時間間隔でqtgraphicウィジェットで何かが発生し、停止ボタンが再生を停止します。ここで別の質問からfunctoolsを見つけましたが、それが正しいことかどうかはわかりません。