問題タブ [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 - itertools.groupby に渡される keyfunc に引数を渡すにはどうすればよいですか?
それで!
を使用した関数は次のitertoos.groupby
とおりです。
現在、出力は次のようになります。
ご覧のとおり、連続する区切り記号は 1 つの文字列に連結されます。この動作をオプションにしたいのですが (関数へのパラメーターで示されるようにsepcat
)、ここで障害にぶつかります... にパラメーターを渡すにはどうすればよいseparators.get
ですか?
functools
ここで私を助けることができますか?
python - f(x)をf(*x)に変換する標準のPythonラッパー?
次のラッパーのユースケースに出くわします。
標準の Python 2 ライブラリに既にこれを行っているものはありますか? で調べましたがfunctools
、何も見つかりませんでした。
コンテキストとして、最近の使用例を次に示します。
python - functools.wrapsでは、Python3のクラスで関数をラップできません
ファイルを最初の引数として取るいくつかの関数のデコレータを書きたいと思います。デコレータはコンテキストマネージャプロトコルを実装する必要があるため(つまり、ラップされた関数をコンテキストマネージャに変換する)、関数をクラスでラップする必要があると考えました。
私はデコレータパターンの経験があまりなく、これまでコンテキストマネージャを実装したことはありませんが、私が書いたものはPython 2.7で機能し、コメントアウトするとPython3.3でも機能しwraps
ます。
行のコメントを解除するときに発生するエラーは、次のwraps
内部で発生しますupdate_wrapper
。
このようなクラスで関数をラップするために使用できるとドキュメントに記載されていないことは知っていますがfunctools.wraps
、Python 2でも機能します。このトレースバックが正確に何を示しているのか、何をすべきかを誰かに説明してもらえますか?wraps
Pythonの両方のバージョンでの効果を達成するには?
編集:私は間違っていた。上記のコードは、私が望んでいることを実行しません。ビルトインのように、の有無にかかわらず関数を使用できるようにしたいと思います。 with
open
上記のコードは、装飾された関数をコンテキストマネージャーに変換します。私ができるようになりたい:
と同様
したがって、私のバージョンのコードは、おそらく次のようになります。
私が見落としたものについては、遠慮なくコメントしてください。
注:JFセバスティアンによるクラスバージョンは、次のように機能するようです。
基本的wraps
にクラスからを削除し、次のように変更return CManager
しました。
python - itertools.accumulate() 対 functools.reduce()
Python 3.3 ではitertools.accumulate()
、通常、提供された iterable に加算演算を繰り返し適用する が、関数の引数をパラメーターとして受け取ることができるようになりました。これは、 と重なっているということfunctools.reduce()
です。大雑把に見ると、現在の 2 つの主な違いは次のようになります。
accumulate()
デフォルトは合計ですが、追加の初期条件を明示的にreduce()
指定することはできませんが、どのメソッドもデフォルトではありませんが、1/0 要素シーケンスで使用するための初期条件を指定できます。accumulate()
最初に iterable をreduce()
取り、最初に関数を取ります。
2つの間に他に違いはありますか?それとも、最初は別々の用途で使用されていた 2 つの関数の動作の問題であり、時間の経過とともに収束し始めているのでしょうか?
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
ますが、必要な引数でそれを呼び出す方法がわかりません
python - functools partial はどのように機能しますか?
functools でパーシャルがどのように機能するかについて頭を悩ませることができません。私はここから次のコードを持っています:
今列に並んでいます
どの引数を渡しても、どちらがieを返すかについてincr
渡されることがy
わかります。lambda
sum(1, y)
1 + y
という事は承知しています。しかし、私はこれを理解していませんでしたincr2(4)
。
部分関数のようにget はどのよう4
に渡されますか? x
私にとっては4
、sum2
. x
との関係は4
?
python - Python の検索置換リストの itertools または functools
特定のより良い文字列に置き換えたい無効な文字列のセットがあります。functools と itertools で遊んでいて、これらを問題に適用したいと思っていますが、少し行き詰まっています。ここに私が持っているものがあります:
mylist 内の各文字列、replacements 内の各置換、string.replace(replacement[0],replacement[1]) のような関数アルゴリズムが必要です。
頭に浮かんだのは、次のようなものでした...
しかし、最初は追加の引数が必要で、2 番目のリスト オブジェクトには属性 replace がありません。これを解決するための洗練された機能的な方法はありますか?
python - pyqt タイマーが値またはエラーを返さない
pyqt でタイマーを使用しようとしています。以下にコードを示しますが、何も出力されず、エラーも発生しません。誰が何が悪いのか知っていますか?
ありがとう
編集の更新:
したがって、これは私が使用している完全なコードの抜粋です。これはもう少し複雑で、別の問題かもしれませんが、結果は同じです。
構造は次のようになります。
私の目標は、ボタンをクリックして再生することです。特定の時間間隔でqtgraphicウィジェットで何かが発生し、停止ボタンが再生を停止します。ここで別の質問からfunctoolsを見つけましたが、それが正しいことかどうかはわかりません。