[英]Python keyword arguments unpack and return dictionary
我有一個 function 定義如下,我正在傳遞關鍵字 arguments。如何返回與關鍵字 arguments 同名的字典?
手動我可以做:
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
}
但我不想那樣做。 有什么方法可以讓我在不實際輸入字典的情況下完成這項工作嗎?
def generate_student_dict(self, first_name=None, last_name=None, birthday=None, gender=None):
return # Packed value from keyword argument.
如果這種方式適合您,請使用kwargs (請參閱理解 Python 中的 kwargs ),如下面的代碼片段所示:
def generate_student_dict(self, **kwargs):
return kwargs
否則,您可以在函數開始時使用built-in locals()
創建一個 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()
如果你不想通過**kwargs
,你可以簡單地返回locals
:
def generate_student_dict(first_name=None, last_name=None,
birthday=None, gender=None):
return locals()
請注意,如果將self
作為參數傳遞,則希望從結果中刪除self
。
在**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
您可以使用locals()
函數。 locals()
更新並返回一個表示當前本地符號表的字典。 在功能塊中調用locals()
時會返回自由變量,而不是在類塊中。
如果您想將更新的值作為字典返回
def generate_student_dict(first_name=None, last_name=None , birthday=None, gender =None):
main_args = locals().copy()
first_name = 'first'
last_name = 'last'
birthday = '20 jan 1993'
newvar = 100
new_args = locals().copy()
updated_args = {}
for k,v in new_args.items():
if k in main_args.keys():
updated_args[k] = v
return updated_args
dict = generate_student_dict()
print(dict) #{'first_name': 'first', 'last_name': 'last', 'birthday': '20 jan 1993', 'gender': None}
如果您想將初始值作為字典返回
def generate_student_dict_1(first_name=None, last_name=None , birthday=None, gender =None):
args = locals()
first_name = 'first'
last_name = 'last'
birthday = '20 jan 1993'
newvar = 100
return args
dict = generate_student_dict_1()
print(dict) #{'first_name': None, 'last_name': None, 'birthday': None, 'gender': None}
如果要包括所有更改,包括方法中定義的額外變量
def generate_student_dict_2(first_name=None, last_name=None , birthday=None, gender =None):
first_name = 'first'
last_name = 'last'
birthday = '20 jan 1993'
newvar = 100
args = locals()
return args
dict = generate_student_dict_2()
print(dict) #{'first_name': 'first', 'last_name': 'last', 'birthday': '20 jan 1993', 'gender': None, 'newvar': 100}
要僅將關鍵字 arguments 轉換為字典,您可以使用此幫助程序
要僅將關鍵字 arguments 轉換為字典,您可以輕松使用此助手
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.