课前梗概
学到这里,大家是不是在想一个问题,我们之前一直用到的简单语法中会有,iut(),print(),len(),input()…………等等,你们是否想过,我们在使用之前没有做什么定义操作而是自然而然用到了,非常自然,这到底是什么情况?它们到底是什么东西呢?
其实,这些函数都是一个名为 builtins模块已经封装定义好的函数,而且这个模块在安装python环境的时候就默认导入了,所以我们可以直接使用。
这些函数,在python我们也称之为“内置函数”。
内置函数
在python的3.6.2版本以上的时候,python现在目前提供给我们68个内置函数。Python通过这68个内置函数,可以为我们提供了丰富、强大、高效、快速的解决方案,大多数时候,我们根本不需要导入第三方库,甚至标准库都不需要。
68个内置函数如下:
#68个内置函数
# 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()
为了更好的记忆和学习,我们将这68个内置函数进行归纳分组!!!你们觉得呢?~_~
我们暂且把68个内容函数分为六大类。
下面按星级来划分重要性!!!!!最高级别*****五颗星!!!!!
作用域相关(2个)
locals():获取某个执行方法所在命名空间的局部变量的字典,列出当前可以用的局部变量。
例如:
>>> locals() {'__name__': '__main__', '__doc__': None, '__package__': None,
'__loader__': <class '_frozen_importlib.BuiltinImporter'>,
'__spec__': None, '__annotations__': {},
'__builtins__': <module 'builtins' (built-in)>}
globals():列出当前环境中所有的全局变量的字典。注意:与global的区别!!!!!
例如:
>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None,
'__loader__': <class '_frozen_importlib.BuiltinImporter'>,
'__spec__': None, '__annotations__': {},
'__builtins__': <module 'builtins' (built-in)>}
看到locals()和globals()运行的结果是一样的,这是为什么呢?
这主要是因为,我当前的cmd进入到的python环境一样,命名空间也是一样的结果。
其他(12个)
这里的其他分成八个类型:
字符串类型代码:eval(),exec(),compile()
eval():将类似计算公式的字符串,解读成为计算方式,并直接执行。例如:
sum="6+8",从"6+8"中可以看出是(sum)一个字符串,但是,经过e1 = eval(sum)之后,e1的结果就是14。
exec():exec 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码。exec 返回值永远为 None。
compile():将字符串编译成Python能识别或执行的代码。 也可以将文件读成字符串再编译。compile() 函数将一个字符串编译为字节代码。
迭代器/生成器相关(3个)
range()
range函数经常使用在for等循环语句当中,所以不过多解释:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # range()函数内只有一个参数,则表示会产生从0开始计数的整数列表: 2 for i in range(4): 3 print(i) 4 5 result: 6 0 7 1 8 2 9 3 10 # python range中,当传入两个参数时,则将第一个参数做为起始位,第二个参数为结束位: 11 for i in range(1,4): 12 print(i) 13 result: 14 1 15 2 16 3 17 18 # range()函数内可以填入三个参数,第三个参数是步进值(步进值默认为1): 19 for i in range(0,10,3): 20 print(i) 21 result: 22 0 23 3 24 6 25 9 26 27 # range函数的参数和结果也并非一定要是正数或是递增的,好比下面两个例子: 28 for i in range(-2,2): 29 print(i) 30 result: 31 -2 32 -1 33 0 34 1 35 >>> range(4,-4,-1) 36 for i in range(2,-2,-1): 37 print(i) 38 result: 39 2 40 1 41 0 42 -1
next()
语法:
next(iterator[,default])
参数
iterator − 要读取行的文件对象,可以看到这里必须问可迭代对象!
default − 如果迭代器耗尽(或者迭代对象没有值了)则返回此默认值。 如果没有给出此默认值,则抛出 StopIteration 异常
l = [1, 2] i = iter(l) print(next(i,'g')) print(next(i,'g')) print(next(i,'g')) result: 1 2 g
iter()
通过iter制造一个迭代器,使其具备next()能力。例如: lis = [1, 2, 3] next(lis) result: Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> next(lis) TypeError: 'list' object is not an iterator 使用iter后: i = iter(lis) print(i) <list_iterator object at 0x0000000002B4A128> print(next(i)) 1 可以看到用用iter函数后,lis就变成一个迭代器了!!!!!!
面向对象相关(9个)
反射相关(4个)
基础数据类型相关(38个)
基础数据类型相关——上部(和数字相关14个)
基础数据类型相关——下部(和数字结构相关20个)