2

これが私の行動です:

>>> def show(d):
        print d
... 
>>> test = {"result": True}
>>> show(test)
{'result': True}
>>> show(test["info"]="Some info")
  File "<console>", line 1
SyntaxError: keyword can't be an expression

式を引数として関数に渡せないのはなぜですか?

4

4 に答える 4

8

=記号は、これが位置パラメータではなく、キーワード パラメータであることを Python に示します。の左側の部分=は式test["info"]であるため、エラーが発生します。

于 2012-05-10T16:54:54.490 に答える
5

Python 式で代入を許可しない理由は、他の言語では一般的で見つけにくいバグであり、次の構文が原因です。

if (x = 0) {
    // error handling
}
else {
    // code that only works for nonzero x
}

ソース: http://docs.python.org/faq/design.html#why-can-ti-use-an-assignment-in-an-expression

ここに画像の説明を入力

于 2012-05-10T16:58:18.687 に答える
4

あなたがしたいことは、グロブ型として渡すことだと思います。

show(*test)  

これを行うには、引数の署名と一致する必要があるため、テストを次のように定義する必要があります

test = {'d' : True}

またはショーはする必要があります

def show(result): 
于 2012-05-10T17:09:36.790 に答える
1

一般的には意味がないからです。そこから何を得たいですか?割り当ては値を返しません。

いくつかの可能性を考えてみましょう:

  • 式は関数として渡す必要があります。ラムダを使用するか、実際の関数を作成する必要があります。
  • 成功した場合、式はブール値を返す必要があります。Python は失敗した場合に例外を発生させます。代わりにそれらをチェックしてください。
  • 式は与えるべきNoneです - これには価値がありません。

いずれにせよ、あなたがやろうとしていることは意味がありません。

于 2012-05-10T16:50:57.680 に答える