如何解决朱莉娅的@edit宏的Python等价于什么?
在Julia中,使用REPL中的@edit
宏调用函数将打开编辑器,并将光标置于定义方法的行。因此,这样做:
julia> @edit 1 + 1
跳转到julia/base/int.jl
并将光标放在行上:
(+)(x::T,y::T) where {T<:BitInteger} = add_int(x,y)
function form:edit(+,(Int,Int))
Python中是否有与Python REPL相同的装饰器/函数?
解决方法
免责声明:在Python生态系统中,这不是核心语言/运行时的工作,而是诸如IDE之类的工具。例如,ipython shell具有??
special syntax以获得包括源代码在内的改进帮助。
Python 3.8.5 (default,Jul 21 2020,10:42:08)
Type 'copyright','credits' or 'license' for more information
IPython 7.18.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import random
In [2]: random.uniform??
Signature: random.uniform(a,b)
Source:
def uniform(self,a,b):
"Get a random number in the range [a,b) or [a,b] depending on rounding."
return a + (b-a) * self.random()
File: /usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/random.py
Type: method
Python运行时本身允许通过inspect.getsource
查看对象的源代码 。这使用启发式方法搜索可用的源代码。对象本身不携带源代码。
Python 3.8.5 (default,10:42:08)
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help","copyright","credits" or "license" for more information.
>>> import inspect
>>> print(inspect.getsource(inspect.getsource))
def getsource(object):
"""Return the text of the source code for an object.
The argument may be a module,class,method,function,traceback,frame,or code object. The source code is returned as a single string. An
OSError is raised if the source code cannot be retrieved."""
lines,lnum = getsourcelines(object)
return ''.join(lines)
无法将任意表达式或语句解析为其源;由于Python中的所有名称都是动态解析的,因此除非执行,否则绝大多数表达式都没有明确定义的实现。调试器,例如pdb.set_trace()
提供的功能,允许在执行表达式时对其进行检查。
在大多数IDE中,例如PyCharm或VSCode,即使是核心语言或第三方库(在VSCode中,这也可以在Julia btw中使用),您都可以Ctrl +单击函数/类以获取其定义。
一个局限性是,这仅适用于“纯Python”代码,未显示C库代码等。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。