Get a function definition/implementation hint similar to the one shown in pycharm.

Chris Angelico rosuav at gmail.com
Tue Oct 19 14:23:22 EDT 2021


On Wed, Oct 20, 2021 at 4:45 AM hongy... at gmail.com
<hongyi.zhao at gmail.com> wrote:
>
> On Tuesday, October 19, 2021 at 5:22:25 AM UTC+8, cameron... at gmail.com wrote:
> > On 18Oct2021 01:43, Hongyi Zhao <hongy... at gmail.com> wrote:
> > >I've written the following python code snippet in pycharm:
> > >```python
> > >import numpy as np
> > >from numpy import pi, sin
> > >
> > >a = np.array([1], dtype=bool)
> > >if np.in|vert(a) == ~a:
> > > print('ok')
> > >```
> > >When putting the point/cursor in the above code snippet at the position denoted by `|`, I would like to see information similar to that provided by `pycharm`, as shown in the following screenshots:
> > >
> > >https://user-images.githubusercontent.com/11155854/137619512-674e0eda-7564-4e76-af86-04a194ebeb8e.png
> > >https://user-images.githubusercontent.com/11155854/137619524-a0b584a3-1627-4612-ab1f-05ec1af67d55.png
> > >
> > >But I wonder if there are any other python packages/tools that can help
> > >me achieve this goal?
> > Broadly, you want the "inspect" module, which is part of the stdlib,
> > documented here: https://docs.python.org/3/library/inspect.html
> >
> > It has many functions for extracting information about things, and you
> > want the signature() function to get the parameters and type annotations
> > of a function.
> >
> > def f(a):
> > ...
> >
> > sig = signature(f)
> >
> > You also want the function docstring for the help text, which is
> > "f.__doc__" in the example above. This is what gets printed by help():
> >
> > >>> import numpy as np
> > >>> help(np.invert)
>
> But the following doesn't work:
>
> In [4]: help(~)
>   File "<ipython-input-4-2a4ba1e3ecdb>", line 1
>     help(~)
>           ^
> SyntaxError: invalid syntax
>

That's because help() is a perfectly ordinary callable, and you can't
pass an operator as a parameter. Try passing it a string instead:

help("~")

ChrisA


More information about the Python-list mailing list