繁体   English   中英

ipython交互模式下function的回声是什么?

[英]What is the echo of function in ipython interactive mode?

我知道交互式 model output 通常是__repr__方法返回。

但在IPythonjupyter中却没有。

例如:

In [1]: abs
Out[1]: <function abs(x, /)>

In [2]: repr(abs)
Out[2]: '<built-in function abs>'

In [3]: str(abs)
Out[3]: '<built-in function abs>'

在原始 python 中:

>>> abs
<built-in function abs>

如何在程序中获取<function abs(x, /)>字符串?

下面是在多个平台上测试repr()的结果。 全部返回相同的描述: <built-in function abs>

测试代码:

import sys, platform
print("repr:  ", getattr(__builtins__, "abs").__repr__()); \
print("os:    ", platform.system(), platform.release()); \
print("python:", sys.version, sys.version_info); 

结果:

iPython online (rollapp.com)
----------------------------
repr:   <built-in function abs>
os:     Linux 4.15.0-137-generic
python: 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] sys.version_info(major=3, minor=5, micro=2, releaselevel='final', serial=0)


Interactive IPython 7.8.0 browser (pythonanywhere.com)
------------------------------------------------------
repr:   <built-in function abs>
os:     Linux 5.4.0-1029-aws
python: 3.8.0 (default, Nov 14 2019, 22:29:45)
        [GCC 5.4.0 20160609] sys.version_info(major=3, minor=8, micro=0, releaselevel='final', serial=0)

Jupyter online (jupyter.org)
----------------------------
repr:   <built-in function abs>
os:     Linux 4.19.150+
python: 3.n7.8 | packaged by conda-forge | (default, Nov 17 2020, 23:42:15)
        [GCC 7.5.0] sys.version_info(major=3, minor=7, micro=8, releaselevel='final', serial=0)


Jupyter online (cocalc.com)
---------------------------
repr:   <built-in function abs>
os:     Linux 5.4.0-1036-gcp
python: 3.8.5 (default, Jan 27 2021, 15:41:15) 
        [GCC 9.3.0] sys.version_info(major=3, minor=8, micro=5, releaselevel='final', serial=0)


macOS Catalina, python 2.7 (local)
----------------------------------
repr:   <built-in function abs>
os:     Darwin 19.6.0
python: 2.7.16 (default, Jun  5 2020, 22:59:21) 
        [GCC 4.2.1 Compatible Apple LLVM 11.0.3 (clang-1103.0.29.20) (-macos10.15-objc- sys.version_info(major=2, minor=7, micro=16, releaselevel='final', serial=0)


macOS Catalina, python 3.8 (local)
----------------------------------
repr:   <built-in function abs>
os:     Darwin 19.6.0
python: 3.8.8 (default, Feb 26 2021, 23:59:43) 
        [Clang 12.0.0 (clang-1200.0.32.29)] sys.version_info(major=3, minor=8, micro=8, releaselevel='final', serial=0)


Python 3.4 online (onlinegdb.com)
---------------------------------
repr:   <built-in function abs>
os:     Linux 4.15.0-1044-gcp
python: 3.4.3 (default, Nov 12 2018, 22:25:49)
        [GCC 4.8.4] sys.version_info(major=3, minor=4, micro=3, releaselevel='final', serial=0)


Python 3.8 online (repl.it)
---------------------------
repr:   <built-in function abs>
os:     Linux 5.4.0-1042-gcp
python: 3.8.9 (default, Apr  3 2021, 01:00:00) 
        [GCC 7.5.0] sys.version_info(major=3, minor=8, micro=9, releaselevel='final', serial=0)

您可以使用getattr(__builtins__, "abs")和使用普通str()的字符串表示来获取内置属性名称,即:

>>> f = getattr(__builtins__, "abs")

>>> f
<built-in function abs>

>>> type(f)
<class 'builtin_function_or_method'>

>>> fstr = str(f)

>>> fstr
'<built-in function abs>'

>>> type(fstr)
<class 'str'>

或 python < 3

getattr(__builtin__, "abs")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM