タグ付けされた質問 「optional-arguments」

21
オプションのキーワード引数の名前付きタプルとデフォルト値
長めの中空の「データ」クラスを名前付きタプルに変換しようとしています。私のクラスは現在次のようになっています: class Node(object): def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right 変換後namedtupleは次のようになります。 from collections import namedtuple Node = namedtuple('Node', 'val left right') しかし、ここに問題があります。元のクラスでは、値のみを渡すことができ、named / keyword引数にデフォルト値を使用することでデフォルトを処理していました。何かのようなもの: class BinaryTree(object): def __init__(self, val): self.root = Node(val) しかし、これは、リファクタリングされた名前付きタプルの場合、すべてのフィールドを渡すことを期待しているため機能しません。もちろん、Node(val)to の出現を置き換えるNode(val, None, None)ことはできますが、それは私の好みではありません。 それで、コードの複雑さを大幅に追加せずに(メタプログラミング)、私の書き換えを成功させることができる優れたトリックはありますか?それとも、錠剤を飲み込んで「検索と置換」を続行する必要がありますか?:)

2
オプションの引数を使用してPython関数を作成するにはどうすればよいですか?
いくつかの引数を取るPython関数があります。これらの引数の一部は、一部のシナリオでは省略できます。 def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None): #code 引数d〜hは、それぞれ異なる意味を持つ文字列です。任意の組み合わせで渡すオプションのパラメーターを選択できることが重要です。たとえば、、、、(a, b, C, d, e)または(a, b, C, g, h)、または(a, b, C, d, e, fそれらすべて(これらは私の選択です)。 関数をオーバーロードできればすばらしいと思いますが、Pythonではオーバーロードがサポートされていません。必要なint引数の一部をリストに挿入しようとしたところ、引数の不一致エラーが発生しました。 現在、最初のいくつかの不足している引数の代わりに空の文字列をプレースホルダーとして送信しています。実際の値だけで関数を呼び出せるようにしたいのですが。 これを行う方法はありますか?引数リストの代わりにリストを渡すことはできますか? 現在、ctypesを使用したプロトタイプは次のようになります。 _fdll.some_function.argtypes = [c_void_p, c_char_p, c_int, c_char_p, c_char_p, c_char_p, c_char_p, …


6
LaTeXのオプションの引数
LaTeXでオプションの引数を持つコマンドをどのように作成しますか?何かのようなもの: \newcommand{\sec}[2][]{ \section*{#1 \ifsecondargument and #2 \fi} } } 次に、私はそれを次のように呼ぶことができます \sec{Hello} %Output: Hello \sec{Hello}{Hi} %Output: Hello and Hi

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.