python/我可以将定义的字典传递给**kwargs吗?

2024-04-18 13:04:01 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我第一次在这里发帖。希望我能得到很好的建议:)我已经学会了如何将**kwargs和*args都传递到函数中,而且效果很好。如下所示:

def market_prices(name, **kwargs):
     print("Hello! Welcome to "+name+" Market!")
     for fruit, price in kwargs.items():
         price_list = " {} is NTD {} per piece.".format(fruit,price)
         print (price_list) 
market_prices('Wellcome',banana=8, apple=10)

但是在实际情况下,我宁愿预先定义一个包含大量键值的字典,因此在调用函数时不必输入每个参数。我在网上搜索过,但找不到一个好的例子或解释:/你能给我一些建议吗?下面是我想说的代码:

^{pr2}$

名称错误:未定义名称“水果”

非常感谢你!:)


Tags: 函数name名称argsmarketprice建议kwargs
3条回答

有4种可能的情况:

您可以使用命名参数调用函数,并且您希望函数中的命名变量
(注意默认值)

def buy(orange=2, apple=3):
    print('orange: ', orange)
    print('apple: ', apple)

buy(apple=4)
# orange:  2
# apple:  4

您可以使用命名参数来调用函数,但在函数中需要一个字典:
然后在函数定义中使用**dictionaryname来收集传递的参数

^{pr2}$

您调用函数传递字典,但需要函数中的命名变量:
调用函数解包字典时使用**dictionaryname

def buy(icecream=1, apple=3, egg=1):
    print('icecream:', icecream)
    print('apple:', apple)
    print('egg:', egg)

shoppinglist = {'icecream':5, 'apple':1}
buy(**shoppinglist)
# icecream: 5
# apple: 1
# egg: 1

您调用函数传递一个字典并且您希望一个字典在函数中:
把字典递给我就行了

def buy(shoppinglist):
    for name, qty in shoppinglist.items():
        print('{}: {}'.format(name, qty) )

shoppinglist = {'egg':45, 'apple':1}
buy(shoppinglist)
# egg: 45
# apple: 1

定义fruits时出错。应该是这样的

fruits = {"apple":10,
       "banana":8,
       "pineapple":50,
       "mango":45
       }

在水果参数之前使用**。在

fruits={"apple":10,
       "banana":8,
       "pineapple":50,
       "mango":45
       }

def market_prices(name, **fruits):
    print("Hello! Welcome to "+name+" Market!")
    for fruit, price in fruits.items():
        price_list = " {} is NTD {} per piece.".format(fruit,price)
        print (price_list)

market_prices('Wellcome ', **fruits) #Use **before arguments

相关问题 更多 >