有人可以解释为什么我在 Python 中得到这个输出吗?

Can someone explain why do I get this output in Python?

因此,我正在尝试调用函数 grocery_shopping-,它接受作为参数问候语、可迭代对象 (emp_name) 和字典(项目)。 我通过关键字传递参数。 然而,输出看起来有点奇怪,因为作为 emp_name 传递的参数被读取为项目! 谁能帮我破译这种(看似奇怪的)行为?

当您在 python 中使用 *args 等参数定义函数时,它会将所有未命名的非关键字变量收集到名为 args 的列表中。当你在 python 中用 **kwargs 这样的参数定义一个函数时,它会将你所有的关键字变量收集到一个名为 kwargs 的字典中,其中键是变量名和值是价值。因此,您所做的是将 17.08.2019 放入 greeting 参数,将任何内容放入 emp_names,并将关键字参数放入 items。你的第一个 for 循环什么都不做,因为 emp_names 是空的。在你的第二个 for 循环中,你打印字典 items 两次。

Google *args 和 python 中的 **kwargs 如果您仍然感到困惑。

您将 emp_nameitems 作为命名参数传递,因此它们 都包含在 **items 中。 *emp_name 为空。

您应该阅读 *args**kwargs