簡體   English   中英

如何獲得內置函數的字符串表示形式?

[英]How to get a string representation of a builtin function?

在Python中獲取內置函數的字符串版本的最佳方法是什么?

>>> import operator
>>> gt = operator.gt
>>> gt
<function _operator.gt>
>>> str(gt)
'<built-in function gt>'

gt返回>的最佳方法是什么? (注意:對於這些運算符,我實際上只需要它: ><>=<===!= )。

您可以訪問內置函數的doc屬性,該屬性包含描述該函數的有用注釋。

>>> operator.lt.__doc__
'lt(a, b) -- Same as a<b.'
>>> operator.gt.__doc__
'gt(a, b) -- Same as a>b.'
>>> operator.eq.__doc__
'eq(a, b) -- Same as a==b.'
>>> operator.ne.__doc__
'ne(a, b) -- Same as a!=b.'

在@Milton給出的答案的基礎上,我們可以做:

import re, operator

def get_symbol(op):
    sym = re.sub(r'.*\w\s?(\S+)\s?\w.*','\\1',getattr(operator,op).__doc__)
    if re.match('^\\W+$',sym):return sym

例子:

 get_symbol('matmul')
'@'
get_symbol('add')
 '+'
get_symbol('eq')
'=='
get_symbol('le')
'<='
get_symbol('mod')
'%'
get_symbol('inv')
'~'
get_symbol('ne')
'!='

僅舉幾例。 您也可以這樣做:

{get_symbol(i):i for i in operator.__all__} 

這為您提供了帶有符號的字典。 您將看到像abs這樣的東西給出了錯誤的提示,因為沒有實現符號版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM