[英]What is the echo of function in ipython interactive mode?
我知道交互式 model output 通常是__repr__
方法返回。
但在IPython
或jupyter
中却没有。
例如:
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.