一、介绍
Python解释器运行时会自动加载builtins
模块,而我们常用的内置函数都是在此模块中;
- 通过globals()查看当前自带模块
>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>}
- 通过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'}))
<class 'str'>
>>> type({'name1':'lain', 'name2':'lilei', 'name3':'tom'})
<class 'dict'>
- 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)
执行结果:
<filter object at 0x021195F0>
[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)
<class 'int'>
>>> type(['lain', 23, 'shenzhen'])
<class 'list'>
- 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__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'a': 1, 'b': 2, 'add': <function add at 0x02E6DA50>, '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__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'a': '3 + 6', 'b': ['a', 'b', 'c', 'd', 'e'], 'add': <function add at 0x02E6DA50>, '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(),返回一个反转的迭代器
<class 'reversed'>
>>> reversed([1, 2, 4])
<list_reverseiterator object at 0x02E4EAD0>
>>> a = reversed([1, 2, 3, 5]) #list结果是一个反转的列表迭代器
>>> list(a)
[5, 3, 2, 1]
>>> list(a) #第二次list就是空
[]
>>> type(a)
<class 'list_reverseiterator'>
- import(),动态加载类或者函数以及模块
>>> __import__('time') #类似于import time
<module 'time' (built-in)>
>>> 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[:]
<memory at 0x02E3E6B0>
- set(),将对象转换为集合
>>> a = set([1, 2, 3, 4, 5])
>>> type(a)
<class 'set'>
>>> type(set())
<class 'set'>
>>> type(set('hello world'))
<class 'set'>