今日、私はquestion に辞書値を関数に渡すことを頼んだ。今私が理解しようとしていることは、私が達成しようとしていることを達成しようとしていた理由(質問されなかった)が決して答えられなかったことです。だから、私のフォローアップはなぜできないのですか?ディクショナリ値への直接参照を関数に渡すことができないのはなぜですか?
def myFunction(newDict['bubba']):
some code to process the parameter
これは単にパーサーの規則がこれを許さないためですか?私は+ Python +関数+ "許容可能なパラメータ"のためのグーグルと有用な何かを見つけることがなかったので、私は任意の情報を感謝します。
私は何が起こっているかを単純化しています。私は私が言ったように私は私が欲しかった-Iはどのような非常に有用な答えを持って行う方法を知って、
myDict={outerkey1:(innerkey1:value,innerkey2:value,. . .innerkeyn:value),outerkey2:(innerkey1:value,innerkey2:value,. . .innerkeyn:value),. . .}
のように構成されている辞書を持っています。しかし、私は、なぜ
def myFunction(outerkey,myDict[outerkey]):
を思って始め細かく構文解析に問題なければならないことを私に発生した構文エラーを示します。
ありがとう、これは後でいくつかの興味深い読書を与えるでしょう。 – PyNEwbie
newDict ['bubba']は有効な識別子ではありません。文法を理解する方法を学ぶことは、その理解に役立つでしょう。私がこのラインを打ち始めると、関数が呼び出されたときに関数newDict ['bubba']が関数を動作させたいことを参照しているので、動作するはずです。解決策は、コールの参照の前に**を使用し、定義内の名前の前に**を使用することでしたが、他の人が記述しているように、私は理解できませんでした(そして今は表面的なレベルでのみ行います)。回答。私が退屈して文法を読むとうまくいけば、もう一度感謝するでしょう – PyNEwbie
Pythonでは、識別子(オブジェクトの名前)には文字、数字、および下線しか使用できません。文法で 'newDict ['bubba']'がオブジェクトに名前を付けるシンボルとして許可されていれば、オブジェクトの名前のシンボルとリスト/辞書のサブスクリプトの動作の違いを伝えることができません。さらに、newDict ['bubba'] 'を識別子として使うことができれば、' newDict'は有効な識別子ではないので、混乱するでしょう。 – cdleary