什么是“返回”?

2024-10-01 19:23:04 发布

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

我正在调试Python 3.1中的一个脚本,发现了以下情况:

(Pdb) p locals() {'count': 264, 'self': , 'depth': 1, 'offset': 0, '__return__': None, 'blkno': 4, 'size': 264}

我发现deferred PEP提到了它,其他几乎没有。在

什么是__return__它是什么时候添加的?它有什么用处?在


Tags: self脚本nonesizereturncount情况pep
3条回答

pdb调试器在计算return命令后停止时,它是函数调用的返回值。对于有任何副作用的返回表达式来说,Is是非常重要的(它不能像从管道中读取一行一样被复制)。在

(Pdb) ...                       # stop somewhere in the debugger ...
> test.py(3)f()
-> return x + 1
(Pdb) l                         # list source: I'm just before return
1      def f():
2        x = 7
3  ->    return x + 1
(Pdb) '__return__' in locals()  # __return__ is still undefined
False
(Pdb) s
 Return 
> test.py(3)f()->8              # This printed 8 is a simple case, but frequently
(Pdb) '__return__' in locals()  # the value is an object or line shortened to 80 ch.
True                            # __return__ has the value after return
(Pdb) __return__
8

如果函数退出时没有执行return命令,那么每次都是__return__ == None。在

__return__关键字仅出现在调试器代码中:

matt@stanley:~/src/Python-3.2$ grep -R __return__ .
./Lib/pdb.py:        frame.f_locals['__return__'] = return_value
./Lib/pdb.py:        if '__return__' in self.curframe_locals:
./Lib/pdb.py:            self.message(repr(self.curframe_locals['__return__']))
./Lib/bdb.py:        if '__return__' in frame.f_locals:
./Lib/bdb.py:            rv = frame.f_locals['__return__']

它是一个通用的或花园式的本地名称,可能是函数或值的名称,从它的名称在locals()中就可以看出。您需要查看定义它的代码,以了解它的用途。它以双下划线开头这一事实表明它是某种特殊值;也许它用于保存某些函数的返回值。但是,Python本身并没有赋予名称__return__任何特殊的含义,因此它可以是任何名称。在

知道你在哪里找到它会是个好的开始。。。在

相关问题 更多 >

    热门问题