タプルを受け入れる関数のシンタックスシュガーはありますか?

フライトオデッセイ

2つの引数を取り、それらに対して計算を実行する関数があるとします。

def add(a, b):
    return a + b

単一の引数を持つ関数のみを処理できるマルチプロセッシングライブラリを介してこの関数を呼び出したいと思います。そこで、代わりに引数を単一のタプルとして受け取るように関数を変更します。

def add2(ab):
    a, b = ab
    return a + b

しかし、これは私には不格好に思えます。変数は基本的に2回定義(および文書化)する必要があります。ラムダ関数を使用している場合は、次のように書くだけで、タプルを適切に受け入れることができます。

add3 = lambda (a, b): a + b

残念ながら、私の関数はラムダ関数として実装するのに十分なほど簡単ではありません。タプルを受け入れるが、そのタプルの各コンポーネントを個別の名前付き引数として扱う名前付き関数を記述できるようにする、Pythonの構文糖衣機能はありますか?これに対する解決策を検索しようとすると、ほとんどの場合、*args演算子への参照が見つかりましたが、関数が呼び出されるサイトを制御していないため、ここでは当てはまりません。

これは、関数がどのように呼び出されるかの例です。マルチプロセッシングライブラリを介して呼び出されるため、複数の引数を渡すことはできません。

import multiprocessing
pool = multiprocessing.Pool(processes=4)
for result in pool.imap_unordered(add, [(1,2),(3,4)]):
    print(result)

Python2.7または3.xのいずれかに対する回答を歓迎します。

泳ぐ

元の関数インターフェイスを変更しないことをお勧めします。これにより、Pythonicが少なくなります。Python 2では、マルチプロセッシングで使用するラッパー関数を記述します。

def _add(args):
    return add(*args)

Python 3では、Pool.starmap代わりに次を使用してください。

>>> def add(a, b):
...     return a + b
... 
>>> p = Pool()
>>> list(p.starmap(add, [(1, 2), ('hello', ' world')]))
[3, 'hello world']

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

タプル値またはシングル値のいずれかを受け入れるジェネリック関数を作成する方法はF#にありますか?

分類Dev

「jenkinsジョブ名」を受け入れ、そのジョブフォームコマンドラインをトリガーするシェルスクリプト(ジョブはパラメーターの名前と数が異なります)

分類Dev

関数型プログラミング言語には、オブジェクトの一部を変更するためのシンタックスシュガーがありますか?

分類Dev

タイプのシーケンスを受け入れる関数

分類Dev

角度のあるグーグルマップのクラスタリングオプションに関するドキュメントはありますか?

分類Dev

Rustには、要素が追加された配列を作成するためのシンタックスシュガーがありますか?

分類Dev

コンストラクターに2つの可能なタイプのパラメーターを受け入れさせる方法はありますか?

分類Dev

次のインターフェイスを変更して、さまざまなタイプのメッセージングシステムのパラメータを受け入れるにはどうすればよいですか。デザインパターンはありますか?

分類Dev

Rでデータフレームを定義するためのシンタックスシュガーはありますか

分類Dev

深くネストされたオプションチェーンと結果チェーンを照合するためのシンタックスシュガーはありますか?

分類Dev

関数をチェックする特性は特定のパラメーターを受け入れますが、戻り値の型は受け入れません

分類Dev

コールバックを受け入れるテンプレート関数を使用してCスタイルの配列を設定します

分類Dev

インデックスプレースホルダーの代わりに名前付き入力パラメーターを受け入れることができる「String.Format」はありますか?

分類Dev

関数パラメータが `any`を受け入れるが` void`であるTypeScriptの `Partial <any>`タイプはありますか?

分類Dev

すべてのタイプの変数(スカラー、ハッシュ、配列、または参照)を受け入れるサブルーチンを作成する方法

分類Dev

ブラウザは「クラシック」jsスクリプトタグを受け入れますが、ES6モジュールは受け入れません—ノードhttpサーバーでのMIMEエラー

分類Dev

KotlinでタイプAまたはタイプBの引数を受け入れる方法はありますか?

分類Dev

オプションを受け入れる関数を、オプションではないものを受け入れるようにしますか?

分類Dev

データがSQLデータベースに挿入されない理由をトラブルシューティングするための関数またはコマンドがPHPにありますか?

分類Dev

プッシュダウンオートマトンのスタックは、どのようにして無限に大きい文字列を受け入れることができますか?

分類Dev

オプションのパラメーターを受け入れ、そのタイプに基づいて、フィルターをかけ、アイコンを返すことができる関数を作成しようとしています

分類Dev

ジェネリックコレクションを受け入れる関数にデータを渡す

分類Dev

いくつかのタイプの1つの(同種の)シーケンスを受け入れる関数のタイプヒント

分類Dev

shared_ptrのベクトルがエラーになります:ベクトルリストをプッシュバックしたいときに「オーバーロードされた関数のインスタンスがありません」

分類Dev

3.1以降のTypeScriptは、コールバック関数の引数タイプを受け入れません

分類Dev

Googleスプレッドシートの特定のシートのgidを返すカスタム関数またはスクリプトはありますか?

分類Dev

スマートイテレータをクラシックイテレータを受け入れる関数に渡す方法は?

分類Dev

SpringマネージドBeanをJavaカスタム/シンプルタグに挿入するエレガントな方法はありますか

分類Dev

RabbitMQとSpringで優先度の高いメッセージのみを受け入れるコンシューマーを作成するオプションはありますか?

Related 関連記事

  1. 1

    タプル値またはシングル値のいずれかを受け入れるジェネリック関数を作成する方法はF#にありますか?

  2. 2

    「jenkinsジョブ名」を受け入れ、そのジョブフォームコマンドラインをトリガーするシェルスクリプト(ジョブはパラメーターの名前と数が異なります)

  3. 3

    関数型プログラミング言語には、オブジェクトの一部を変更するためのシンタックスシュガーがありますか?

  4. 4

    タイプのシーケンスを受け入れる関数

  5. 5

    角度のあるグーグルマップのクラスタリングオプションに関するドキュメントはありますか?

  6. 6

    Rustには、要素が追加された配列を作成するためのシンタックスシュガーがありますか?

  7. 7

    コンストラクターに2つの可能なタイプのパラメーターを受け入れさせる方法はありますか?

  8. 8

    次のインターフェイスを変更して、さまざまなタイプのメッセージングシステムのパラメータを受け入れるにはどうすればよいですか。デザインパターンはありますか?

  9. 9

    Rでデータフレームを定義するためのシンタックスシュガーはありますか

  10. 10

    深くネストされたオプションチェーンと結果チェーンを照合するためのシンタックスシュガーはありますか?

  11. 11

    関数をチェックする特性は特定のパラメーターを受け入れますが、戻り値の型は受け入れません

  12. 12

    コールバックを受け入れるテンプレート関数を使用してCスタイルの配列を設定します

  13. 13

    インデックスプレースホルダーの代わりに名前付き入力パラメーターを受け入れることができる「String.Format」はありますか?

  14. 14

    関数パラメータが `any`を受け入れるが` void`であるTypeScriptの `Partial <any>`タイプはありますか?

  15. 15

    すべてのタイプの変数(スカラー、ハッシュ、配列、または参照)を受け入れるサブルーチンを作成する方法

  16. 16

    ブラウザは「クラシック」jsスクリプトタグを受け入れますが、ES6モジュールは受け入れません—ノードhttpサーバーでのMIMEエラー

  17. 17

    KotlinでタイプAまたはタイプBの引数を受け入れる方法はありますか?

  18. 18

    オプションを受け入れる関数を、オプションではないものを受け入れるようにしますか?

  19. 19

    データがSQLデータベースに挿入されない理由をトラブルシューティングするための関数またはコマンドがPHPにありますか?

  20. 20

    プッシュダウンオートマトンのスタックは、どのようにして無限に大きい文字列を受け入れることができますか?

  21. 21

    オプションのパラメーターを受け入れ、そのタイプに基づいて、フィルターをかけ、アイコンを返すことができる関数を作成しようとしています

  22. 22

    ジェネリックコレクションを受け入れる関数にデータを渡す

  23. 23

    いくつかのタイプの1つの(同種の)シーケンスを受け入れる関数のタイプヒント

  24. 24

    shared_ptrのベクトルがエラーになります:ベクトルリストをプッシュバックしたいときに「オーバーロードされた関数のインスタンスがありません」

  25. 25

    3.1以降のTypeScriptは、コールバック関数の引数タイプを受け入れません

  26. 26

    Googleスプレッドシートの特定のシートのgidを返すカスタム関数またはスクリプトはありますか?

  27. 27

    スマートイテレータをクラシックイテレータを受け入れる関数に渡す方法は?

  28. 28

    SpringマネージドBeanをJavaカスタム/シンプルタグに挿入するエレガントな方法はありますか

  29. 29

    RabbitMQとSpringで優先度の高いメッセージのみを受け入れるコンシューマーを作成するオプションはありますか?

ホットタグ

アーカイブ