23

以下のような関数定義があり、キーワード引数を渡しています。キーワード引数と同じ名前の辞書を返すにはどうすればよいですか?

手動でできること:

def generate_student_dict(first_name=None, last_name=None , birthday=None, gender =None):
    return {
        'first_name': first_name,
        'last_name': last_name,
        'birthday': birthday,
        'gender': gender
    }

しかし、私はそれをしたくありません。実際にdictを入力せずにこれを機能させる方法はありますか?

 def generate_student_dict(self, first_name=None, last_name=None, birthday=None, gender=None):
     return # Packed value from keyword argument.
4

5 に答える 5

14

その方法が適している場合は、以下のコード スニペットのようにkwargs ( Understanding kwargs in Pythonを参照) を使用します。

def generate_student_dict(self, **kwargs):            
     return kwargs

built-in locals()それ以外の場合は、関数 startで params のコピーを作成し、そのコピーを返すことができます。

def generate_student_dict(first_name=None, last_name=None , birthday=None, gender =None):
     # It's important to copy locals in first line of code (see @MuhammadTahir comment).
     args_passed = locals().copy()
     # some code
     return args_passed

generate_student_dict()
于 2016-02-04T10:06:01.917 に答える
8

を渡したくない場合は**kwargs、単に返すことができますlocals

def generate_student_dict(first_name=None, last_name=None, 
                          birthday=None, gender=None):
    return locals()

self引数として渡す場合は、結果から削除することに注意してください。

于 2016-02-04T10:06:52.890 に答える
3

キーワード引数を取得**kwargs

def generate_student_dict(self, **kwargs):
  # use it like
  # kwargs.get('first_name')
  # kwargs.get('last_name')
  # kwargs.get('birthday')
  # kwargs.get('gender')
  return kwargs
于 2016-02-04T10:05:43.383 に答える
1

機能を使用できlocals()ます。locals()現在のローカル シンボル テーブルを表す辞書を更新して返します。自由変数はlocals()関数ブロックで呼び出されたときに返されますが、クラス ブロックでは返されません。

于 2016-02-04T10:09:05.833 に答える