Python 什么';打印和返回之间的实际差异是多少
这是我的密码。我想从python dict中获取每个键的值。因此,当我在函数中使用Python 什么';打印和返回之间的实际差异是多少,python,python-3.x,Python,Python 3.x,这是我的密码。我想从python dict中获取每个键的值。因此,当我在函数中使用print时,它工作正常,但当我在函数中使用return时,它只返回任何一个值,而不是全部值。那么,如何使用return()获取所有值呢 如果您从其他地方调用该函数,比如从另一个函数调用,或者仅从终端调用,则return语句将允许您将返回值存储在变量中。Print只是将Print函数中给出的输入显示到您调用tech函数的终端如果您从其他地方调用函数,如从另一个函数或仅从终端调用函数,则return语句将允许您将返回
print
时,它工作正常,但当我在函数中使用return
时,它只返回任何一个值,而不是全部值。那么,如何使用return()
获取所有值呢
如果您从其他地方调用该函数,比如从另一个函数调用,或者仅从终端调用,则return语句将允许您将返回值存储在变量中。Print只是将Print函数中给出的输入显示到您调用tech函数的终端如果您从其他地方调用函数,如从另一个函数或仅从终端调用函数,则return语句将允许您将返回值存储在变量中。Print(打印)只是将打印功能中给出的输入显示到您调用技术功能的终端,因为当到达时,
return
语句将终止该功能。要获得您想要的行为,只需将其重写为
def tech(arg):
return arg.values():
因为当到达时,
return
语句将终止函数。要获得您想要的行为,只需将其重写为
def tech(arg):
return arg.values():
return
终止(结束)它所在的函数,无论从何处调用它,都会收到它返回的值
因此,在代码中:循环开始,它点击return
语句,因此它结束函数(并结束循环),只返回它所在的第一个元素。然后调用函数的print
语句将只打印一个元素,就是它
另一方面,如果将返回
替换为打印
,则函数不会过早终止,因此循环将遍历所有值并打印它们
在某种程度上,您的想法是将函数转换为迭代器。尝试用
yield
替换return
,看看会发生什么,然后阅读python文档中的迭代器和yield
return
终止(结束)它所在的函数,无论从何处调用它,都会收到它返回的值
因此,在代码中:循环开始,它点击return
语句,因此它结束函数(并结束循环),只返回它所在的第一个元素。然后调用函数的print
语句将只打印一个元素,就是它
另一方面,如果将返回
替换为打印
,则函数不会过早终止,因此循环将遍历所有值并打印它们
在某种程度上,您的想法是将函数转换为迭代器。尝试用
yield
替换return
,看看会发生什么,然后阅读python文档中的迭代器和yield
您的代码由两个主要块组成:
1.定义函数“tech”
2.打印调用函数“tech”的结果
在函数tech中有一个“for te in arg.values()”循环。循环使用第一个值初始化,循环遇到“return”语句,该语句强制从函数“tech”返回当前值。循环被中止
print函数接收函数tech的结果并打印它(仅包含第一个参数)您的代码由两个主要块组成: 1.定义函数“tech” 2.打印调用函数“tech”的结果 在函数tech中有一个“for te in arg.values()”循环。循环使用第一个值初始化,循环遇到“return”语句,该语句强制从函数“tech”返回当前值。循环被中止 print函数接收函数tech的结果并打印它(仅包含第一个参数)
返回
是一个语句;句法结构。它将控件和可选值返回给函数的调用方。换句话说,它终止一个函数。这就是为什么tech
只返回一个项目的原因;在for循环的第一次迭代之后,您立即将控制和te
的值返回到调用tech
的位置
打印
另一方面是一种功能。它只需将其参数打印到1标准输出。在本例中,您循环遍历arg.values()
中的所有值,并通过print
打印它们。完成后,函数隐式返回None
并结束
您似乎想要的是一个生成器。生成器基本上是一个可以返回多个值的函数。您可以使用yield
关键字执行此操作:
>>> def gen():
for n in [1, 2, 3]:
yield n
>>> # gen returns a generator object. We can call this objects
>>> # __next__ method via next() to retrieve the next value from it.
>>> gen_obj = gen()
>>> next(gen_obj)
1
>>> next(gen_obj)
2
>>> next(gen_obj)
3
>>> next(gen_obj)
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
next(gen_obj)
StopIteration
>>>
编辑:由于您似乎正在使用Python 3.3或更高版本,因此可以使用“从语法中产生”命令。这将允许您将生成器转换为平面列表:
def tech(arg):
for te in arg.values():
yield from te
print(list(tech({'Andrew Chalkley': ['jQuery Basics', 'Node.js Basics'],
'Kenneth Love': ['Python Basics', 'Python Collections']})))
1从技术上讲,
print
也可以在给定正确关键字参数的情况下写入其他位置。但我避免提及这一点,因为这会分散我的注意力。return
是一个语句;句法结构。它将控件和可选值返回给函数的调用方。换句话说,它终止一个函数。这就是为什么tech
只返回一个项目的原因;在for循环的第一次迭代之后,您立即将控制和te
的值返回到调用tech
的位置
打印
另一方面是一种功能。它只需将其参数打印到1标准输出。在本例中,您循环遍历arg.values()
中的所有值,并通过print
打印它们。完成后,函数隐式返回None
并结束
你看起来怎么样
def tech(arg):
for te in arg.values():
yield from te
print(list(tech({'Andrew Chalkley': ['jQuery Basics', 'Node.js Basics'],
'Kenneth Love': ['Python Basics', 'Python Collections']})))