[英]Passing a dictionary to as keyword parameters to a function
我有一个计算销售额的函数:
def get_sales(
sale_1: int,
sale_2: int,
sale_3: int,
with_fees: bool = True,
) -> float:
if with_fees is True:
return (sale_1 + sale_2 + sale_3) * 0.95
else:
return (sale_1 + sale_2 + sale_3)
我还有一本名为sales_test
的字典:
sales_test = {'sale_1': 100,
'sale_2': 75,
'sale_3': 92,
'revenue_1' : 400,
'revenue_2' : 219,
'city' : 'London'
}
我希望能够创建另一个名为advanced_sales
的函数,该函数接受sales_test
字典并返回get_sales
输出:
def advanced_sales(
sales_test: Dict[str, int],
with_fees: bool = True,
) -> float:
sales = get_sales(**sales_test)
return sales
advanced_sales(sales_test)
期望的输出是: 253.64999999999998
(即100+75+92)
但是,我收到以下错误消息:
----> 6 sales = get_sales(**sales_test)
7 return sales
TypeError: get_sales() got an unexpected keyword argument 'revenue_1'
任何解包sales_test
字典的帮助将不胜感激。 谢谢!
您正在尝试传递函数无法接受的附加参数。 解决此问题的一种方法是:
import numpy as np
import pandas as pd
sales_test = {'sale_1': 100,
'sale_2': 75,
'sale_3': 92,
'revenue_1' : 400,
'revenue_2' : 219,
'city' : 'London'
}
def get_sales(
with_fees: bool = True,**kwargs,
) -> float:
sale_1,sale_2,sale_3=kwargs['sale_1'],kwargs['sale_2'],kwargs['sale_3']
if with_fees is True:
return (sale_1 + sale_2 + sale_3) * 0.95
else:
return (sale_1 + sale_2 + sale_3)
def advanced_sales(
sales_test=None,
with_fees: bool = True,
) -> float:
sales = get_sales(**sales_test,with_fees=with_fees)
return sales
print(advanced_sales(sales_test))
get_sales 仅接受 4 个参数,但您传递的参数太多,并且其中没有一个被命名为 income_1 等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.