本篇文章小编给大家分享一下Python内置函数代码示例解析,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
这种图皆取自python.org,列出了python3.10中的内置函数。
但是,这些真的都是函数吗?
我们来测试一下:
import types import inspect lst = dir(__builtins__) for name in lst: print(name, eval(f'type({name})'))
lst获得的都是__builtins__模块中内容的名称,也就是说lst是一个由字符串组成的列表。但是每个字符串所代表的内容可各有含义。比如"sum"字符串所代表的就是个内置函数,"str"字符串所代表的就是个内置类。
通过eval的方式执行type函数我们可以获得每一个name对应的type对象描述,例如:
bool
其实到这里我们已经可以发现,像type, dict,str,range,list,tuple,zip其实根本不是函数名称是类型名称:
dict
list
map
range
set
str
tuple
type
zip
所以,类似range(10),type("c")这样的写法,是调用构造器创建了相应类型的实例。
接下来,我们再深挖一步,分别输出__builtins__中所有的内置函数和内置类型。
输出内置函数:
import types import inspect lst = dir(__builtins__) for name in lst: if eval(f'type({name})') is types.BuiltinFunctionType: print(f'{name}是内置函数') if inspect.isbuiltin(getattr(__builtins__, name)): print(f'{name}是内置函数') fs = inspect.getmembers(__builtins__, inspect.isbuiltin) print(fs)
这里用了三种方式:
1. 如果其type对象是types.BuiltinFunctionType,则说明这是个内置函数。
2. Python中一切皆对象,那么getattr(__builtins__,name)就是把__builtins__模块视为对象,从中获取名字是name对应的具体内容,这其实就是反射在Python中的体现。获得具体内容后,利用inspect的isbuitin函数来检测是否是内置函数。(注意:inspect模块的isfunction函数只能用来检测普通函数,但内置函数不是普通函数,所以isfunction检测内置函数会得到False。要使用isbuiltin函数进行检测。)
3. 既然__builtins__是一个对象,那么完全可以使用inspect的getmemebers函数并增加一个过滤器inspect.isbuiltin,就可以直接将__builtins__中的内置函数过滤出来了。
接下来是输出内置类:
import types import inspect lst = dir(__builtins__) for name in lst: print(name, eval(f'type({name})')) for name in lst: if inspect.isclass(getattr(__builtins__, name)): print(f'{name}是内置类') cs = inspect.getmembers(__builtins__, inspect.isclass) print(cs)
因为types中并没有针对类这样的检测。所以这里都是使用inspect.isclass来进行检测。
换句话说,内置类也是类。
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级