

elseの場合、dictを入れる必要があるところに、NoneTypeを入れているので、Type Errorになっています。

[code]

    def definition(config:dict):
        if A in config:
            A = config['A']
        else:
            A = None
        create_instance(
            OptionA=A
        )
    def create_instance(OptionA:dict):
    ....
    
[/code]

やりたいこととしてはconfigにAというdictが存在していたらcreate_instanceのOptionAにconfig['A']というdictをいれて、なければ引数に何も入れないのと同じ処理をしたいと思っています。

そもそも入れる方が違う時点で考え方が間違っているのだとは思っていますが、どうやって解決したらよいか悩んでいます。

暫定対応として以下のようにすれば問題ないと思いますが、cretate_instanceの引数が複数になったときに他の引数でも同じようなことをやるとifだらけになってしまいそうで、他に良い方法があれば教えていただけますと幸いです。

[code]

    if A in config:
         A = config['A']
        create_instance(
            OptionA=A
        )
    else:
        A = None
        create_instance()
    
[/code]


CC BY-SA 4.0
2022-11-16T19:52:20.137
92267
2022-11-18T00:17:16.893
2022-11-17T09:53:35.627
24178
24178
question
python
設定ファイルに存在していたら引数に設定し、なければ引数に入れない方法


すこし質問に挙げられているコードが違う気がしますが、

  * configにキーAがあるときにはキーワード付き引数OptionAで関数を呼びたい
  * configにキーAがないときにはキーワード引数なしで関数を呼びたい

という質問と解釈しました。

[code]

    kwargs = {}
    if 'A' in config;
        kwargs['OptionA'] = config['A']
    
    create_instance(**kwargs)  #キーワード引数をdictから展開して呼び出し
    
[/code]

とすれば良いと思います。


CC BY-SA 4.0
2022-11-18T00:17:16.893
92288
2022-11-18T00:17:16.893
28626
92267
answer