一、介绍
Python解释器运行时会自动加载builtins模块,而我们常用的内置函数都是在此模块中;
- 通过globals()查看当前自带模块
>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': , '__spec__': None, '__annotations__': {}, '__builtins__': }
- 通过dir()查看builtins模块内置的函数,通过len()计算有153个内置属性,其中大约80多内置函数,60多个内置异常,还有几个内置常数,特殊名称以及模块相关的属性;
len(dir(__builtins__))
内置函数
abs()
dict()
help()
min()
setattr()
all()
dir()
hex()
next()
slice()
any()
divmod()
id()
object()
sorted()
ascii()
enumerate()
input()
oct()
staticmethod()
bin()
eval()
int()
open()
str()
bool()
exec()
isinstance()
ord()
sum()
bytearray()
filter()
issubclass()
pow()
super()
bytes()
float()
iter()
print()
tuple()
callable()
format()
len()
property()
type()
chr()
frozenset()
list()
range()
vars()
classmethod()
getattr()
locals()
repr()
zip()
compile()
globals()
map()
reversed()
_import_()
complex()
hasattr()
max()
round()
delattr()
hash()
memoryview()
set()
abs()绝对值函数
>>> abs(-100)
100
dict() 创建字典
>>> dict(abc='123')
{'abc': '123'}
>>> dict()
{}
help()帮助函数,查看函数或者模块的使用方法
>>> help()
help> keywords
min()函数,返回最小值
>>> min(1, 2, 3)
1
setattr()函数,跟类有关,后续补充
all()函数,判断元组或列表内元素是否为True,如果有一个不为True那么结果为False
>>> a = [1, 2, 3]
>>> all(a)
True
>>> b = [0, 1, 2]
>>> all(b)
False
dir()函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表
dir()
['A', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'b']
>>> dir(a)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
hex()函数,将十进制转换为十六进制
>>> hex(10)
'0xa'
next()函数,返回迭代器中下一个元素值
>>> number = '178582258'
>>> it = iter(number)
>>> next(it)
'1'
>>> next(it)
'7'
slice(), 返回切片类型的对象
>>> myslice = slice(5)
>>> myslice
slice(None, 5, None)
>>> arr = range(10)
>>> arr[myslice]
range(0, 5)
any(),与all()相反,判断元组或列表内元素是否为False,如果有一个不为False那么结果为True
>>> any([0, 0, 0])
False
>>> any([0, 1, 2])
True
divmod(),计算两个值相除,返回商和余数
>>> divmod(3, 1)
(3, 0)
>>> divmod(3, 2)
(1, 1)
id(),获取对象的内存地址
>>> id(3)
1876484912
object(),该方法不接收任何参数,返回一个没有任何功能的对象。object是Python所有类的基类。
sorted(),排序函数
>>> sorted([88, 2, 44, 51, 2231, 5, 111, 41])
[2, 5, 41, 44, 51, 88, 111, 2231]
>>> sorted((88, 2, 44, 51, 2231, 5, 111, 41))
[2, 5, 41, 44, 51, 88, 111, 2231]
ascii(),打印函数,类似于print()方法
>>> ascii('abc')
"'abc'"
>>> ascii(2)
'2'
enumerate(), 枚举函数,可用for循环打印出列表元素以及对应的下标
>>> a = ['lain', 'tom', 'lili', 'sunne']
>>> for i in enumerate(a):
print(i)
(0, 'lain')
(1, 'tom')
(2, 'lili')
(3, 'sunne')
input(),输入函数
>>> input('姓名: ')
姓名: LAIN
'LAIN'
oct(),讲十进制转成八进制
>>> oct(222)
'0o336'
staticmethod(),跟类有关,后续补充
bin(),讲十进制转成二进制
>>> bin(333)
'0b101001101'
>>> bin(2)
'0b10'
eval(),执行字符串表达式,并返回结果
>>> eval(('7 + 1'))
8
int(),将字符串或者数字转换成整型,可指定进制数
>>> int('22', 8)
18
>>> int('22', 16)
34
>>> int('22', 10)
22
open(),文件操作,打开或者创建文件等;
str(), 更改类型为字符串
>>> type(str({'name1':'lain', 'name2':'lilei', 'name3':'tom'}))
>>> type({'name1':'lain', 'name2':'lilei', 'name3':'tom'})
bool(),返回布尔值
>>> bool()
False
>>> bool(2)
True
exec(),执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码
>>> exec('print("hello world")')
hello world
isinstance(),判断对象是否属于某个数据类型
>>> isinstance('1', int)
False
>>> isinstance(1, int)
True
ord(),返回ascii码表上的数字
>>> ord('A')
65
>>> ord('a')
97
sum(),求和
>>> sum([1, 2, 3])
6
>>> sum((2, 3, 4))
9
bytearray(),返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256
如果 source 为整数,则返回一个长度为 source 的初始化数组;
如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
如果没有输入任何参数,默认就是初始化数组为0个元素。
>>> bytearray([1, 2, 3])
bytearray(b'\x01\x02\x03')
>>> bytearray('jianshu.com', 'utf-8')
bytearray(b'jianshu.com')
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中
def is_odd(n):
return n % 2 == 1
tmplist = filter(is_odd, [1, 2, 3, 4, 5])
newlist = list(tmplist)
print(tmplist)
print(newlist)
执行结果:
[1, 3, 5]
issubclass(),类相关函数后续补充
pow(),幂函数
>>> pow(2, 2)
4
>>> pow(2, 3)
8
super(),类相关函数后续补充
bytes(),将对象类型转换为字节
>>> bytes(2)
b'\x00\x00'
>>> bytes('i', encoding='utf-8')
b'i'
float(),将对象类型转换为浮点数
>>> float(100)
100.0
>>> float(-12)
-12.0
iter(),生成迭代器,使其具备next()功能
>>> a = [1, 2, 3]
>>> b = iter(a)
>>> next(b)
1
>>> next(b)
2
>>> next(b)
3
print(),打印函数
>>> print('Hello World')
Hello World
tuple(),将对象转换成元组类型
>>> tuple()
()
>>> tuple('lain')
('l', 'a', 'i', 'n')
>>> tuple(['lain', 'baidu', 'FB', 'alibaba'])
('lain', 'baidu', 'FB', 'alibaba')
callable(),判断对象是否可以被调用
>>> callable(0)
False
>>> callable('lain')
False
>>> def add(a):
print(a)
>>> callable(add)
True
format(),字符串格式化
>>> print('my name is {0}'.format('lain'))
my name is lain
len(),计算长度或者元素个数
>>> len('jianshu.com')
11
>>> len(['lain', 'baidu', 'FB', 'alibaba'])
4
property(),类相关函数后续补充
type(),查看对象数据类型
>>> type(3)
>>> type(['lain', 23, 'shenzhen'])
chr(),与ord相反,给出ascii码表中对应得数字,返回字符
>>> ord('a')
97
>>> chr(97)
'a'
frozenset(),创建冰冻集合此集合不可增删改
>>> frozenset([2, 3, 4, 6])
frozenset({2, 3, 4, 6})
list(),将对象转换成列表
>>> list('hello world')
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
range(),返回可迭代对象
>>> range(10)
range(0, 10)
vars(),返回字典
>>> x = 1
>>> scope = vars()
>>> scope["x"]
1
classmethod(),类相关函数后续补充
getattr(),类相关函数后续补充
locals(),返回当前作用域下局部变量
locals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': , '__spec__': None, '__annotations__': {}, '__builtins__': , 'a': 1, 'b': 2, 'add': , 'x': 1, 'scope': {...}}
repr(),类似print打印
>>> repr(a)
'1'
zip(),用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存
>>> a = [1, 2, 3, 4, 5]
>>> b = ['a', 'b', 'c', 'd', 'e']
>>> list(zip(a, b))
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]
compile(),将一个字符串编译为字节代码
>>> a = '3 + 6'
>>> eval(compile(a, '', 'eval'))
9
globals(),会以字典类型返回当前位置的全部全局变量
>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': , '__spec__': None, '__annotations__': {}, '__builtins__': , 'a': '3 + 6', 'b': ['a', 'b', 'c', 'd', 'e'], 'add': , 'x': 1, 'scope': {...}}
map(),会根据提供的函数对指定序列做映射,第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表
calc = lambda x, y: x * y
data = map(calc, [1, 2, 3, 4, 5], [6, 7, 8, 9, 10]) #将第一个列表和第二个列表分别当做参数x,y
for i in data:
print(i,end=' ')
运行结果:
6 14 24 36 50
reversed(),返回一个反转的迭代器
>>> reversed([1, 2, 4])
>>> a = reversed([1, 2, 3, 5]) #list结果是一个反转的列表迭代器
>>> list(a)
[5, 3, 2, 1]
>>> list(a) #第二次list就是空
[]
>>> type(a)
import(),动态加载类或者函数以及模块
>>> __import__('time') #类似于import time
>>> import time
complex(),用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数
>>> complex(1, 2)
(1+2j)
>>> complex('1')
(1+0j)
>>> complex('1+2j')
(1+2j)
hasattr(),类相关函数后续补充
max(),返回最大值
>>> max([1, 2, 3, 4])
4
>>> max(1, 2, 3, 5)
5
round(),四舍五入,可以指定小数位数
>>> round(3.4)
3
>>> round(4.6)
5
>>> round(3.1415926, 3)
3.142
>>> round(3.1415926, 2)
3.14
delattr(),类相关函数后续补充
hash(),返回对象的哈希值
>>> hash('jianshu.com')
1705446308
>>> hash(15278569)
15278569
memoryview(),返回obj的内存视图对象;obj只能是bytes或bytesarray类型
>>> a = memoryview(b'jianshu.com')
>>> a[:]
set(),将对象转换为集合
>>> a = set([1, 2, 3, 4, 5])
>>> type(a)
>>> type(set())
>>> type(set('hello world'))