使用返回非类型python的kwargs映射

2024-04-25 05:12:54 发布

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

假设我有个功能,像这样:

def test(*args, **kwargs):
    print(args, kwargs)

我想在地图对象中调用它,就像这样:

^{pr2}$

当我打印其中的值时,它显示:

>>> for i in obj:
    print(i)


(2,) {'var': 1}
None
(3,) {'var': 2}
None
(4,) {'var': 3}
None

None值来自何处?在


Tags: 对象intest功能noneobjforvar
2条回答

您的映射函数正在打印,而不是返回值,因此当您迭代map对象时,i被反复设置为NoneNone由任何没有显式return的函数返回)。要修复此问题,请将函数定义更改为类似于:

def test(*args, **kwargs):
    return args, kwargs

所以它返回值而不是打印它们,循环的print将看到它们而不是Nones

或者,保持函数不变,并将循环更改为:

^{pr2}$

这样就不打印无用的{{}s从^{{}}地图's mapping function should be side-effect free (}打印{}地图{}}{}}打印^{{}}返回{{}返回{{}}打印{{}}{{}}{{}}打印`,呼叫者不能真正做太多(即使他们通过低俗的黑客捕捉到它,他们卡住解析它解析它,做任何事情任何事情,他们坚持解析它,做任何事情{}}{{}}{}{{{{{{{有用)。在

您的函数test不返回任何内容,因此它返回None。所以在跑步之后

obj = map(lambda var: test(var+1, var = var), [1, 2, 3])

实际上,您将使用[None, None, None]得到{}。在

也许您希望在函数中返回而不是打印:

^{pr2}$

相关问题 更多 >