内置函数
file:///C:/Users/Administrator/Desktop/Evernote.enex.html
作用域相关
locals() # 全局名称空间中石油的变量放在一个字典中
globals() # 局部名称空间所有变量放在一个字典中
a = 2
b = 3
def func1():
c = 5
d = 6
print(globals()) #返回; {'a': 2, 'b': 3,}
print(locals()) #返回: {'d': 6, 'c': 5}
func1()
其他相关
字符串类型代码的执行
1.***eval: 执行字符串类型的代码, 并返回结果.(抛开字符串的俩边, 进行操作计算, 并返回)
print(eval('3+4')) #返回: 7
简单求值表达式用eval
2.***exec: 执行字符串类型的代码, 流程语句 < 写一段代码放入字符串里, 发给别人, 别人用exec一下就可以得到里面的代码 >
ret1 = '''
li = [1, 2, 3]
for i in li:
print(i)
'''
print(exec(ret1)) #返回:1, 2,3,None
流程语句使用exec
总结:有返回值的字符串形式的代码用eval,没有返回值的字符串形式的代码用exec,一般不用compile。
- compire: 将字符串的代码, 代码对象能够通过exec语句来执行或者eval()进行求值
输入输出相关
1.input:函数接受一个标准输入数据,返回为 string 类型。
2.***print:打印输出。
源码分析:def print(self, *args, sep=' ', end='\n', file=None)
print(333,end = '**') #理解:上下的内容以*拼接起来.默认是以空格
print(666)
返;333**666:
每一次打印的结尾,默认为换行符
print('dddsd','hgg','hfgh',sep ='|') #每一个元素通过这个连接符(|)链接起来
with open ('log',encoding = 'utf-8',mode = 'w') as f1
print('656546',file = f1) #将这个文件直接写入,能写能追加
内存相关
id:用于获取对象的内存地址
* hash:获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值。
print(hash(123456)) #数字不变
print(hash('dsfff'))
print(hash('fdsfdsf'))
#字符串是任意的,执行一次hash值变一次,位数是一样的.
文件操作相关
open:函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。
:
模块相关__import__
__import__:函数用于动态加载类和函数 。
帮助
*help:函数用于查看函数或模块用途的详细说明
调用相关
***callable:函数用于检查一个对象是否是可调用的。
如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。
def func1():
print(555)
a = 3
f = func1
print( callable(f)) #返回: True
print( callable(a)) #返回: False
#理解:用callable这个内置函数去检测变量是不是函数名,是就返回: True,不是就返回: False
查看内置属性,
*** dir 查找你这个对象的所有方法
print(dir(list))
迭代器生成器相关
1 .range:函数可创建一个整数对象,一般用在 for 循环中。
- *next:内部实际使用了__next__方法,返回迭代器的下一个项目。
li =iter( [1, 2, 3, 4, 5, 6, 7 ])
while True:
try:
# 获得下一个值
x = next(li) #页可以这样写 x = li.__next__(),用法不一样,但都是在求他的下一个值
print(x)
except StopIteration:
遇到except StopIteration就退出循环,这里的next 就是一根内置函数,封装了__next__的功能,所以可以这样用
break
- *iter:函数用来生成迭代器(讲一个可迭代对象,生成迭代器)
iter这里为内置函数,封装了一下,跟__iter__的功能一样,同next与__next__一样.
基础数据类型相关
数字相关
数据类型
bool :用于将给定参数转换为布尔类型,如果没有参数,返回 False。
*int:函数用于将一个字符串或数字
print(int()) # 0
print(int('12')) # 12
print(int(3.6)) # 3 #保留整数
print(int('0100',base=2)) # 将2进制的 0100 转化成十进制。结果为 4
float:函数用于将整数和字符串转换成浮点数
print(type(3.14)) #返回: <class 'float'> #保留整数
print(float(3)) #返回;3.0
complex:函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。。
进制转换:
*bin:将十进制转换成二进制并返回。 用0b表示
print(bin(5)) # 0b101
* oct:将十进制转化成八进制字符串并返回。用0o表示
print(oct(7)) #0o7
*hex:将十进制转化成十六进制字符串并返回。用0x表示
print(hex(19)) #0x13
数学运算(7):
*abs:函数返回数字的绝对值。
print(abs(-20)) #20
*divmod:计算除数与被除数的结果,返回一个包含商和余数的元组(a // b, a % b)。
print(divmod(10, 3)) # (3, 1) #应用到网页分页
round:保留浮点数的小数位数,默认保留整数。
print(round(3.1415926)) # 3
print(round(3.1415926,3)) # 3.142 保留3位数
pow:求x**y次幂。(三个参数为x**y的结果对z取余)
print(pow(2, 3)) # 8
print(pow(2, 3, 5)) # 3 先将2*3的次幂算出来为8,然后用8除5,商1余3,得到的余数为3,就是结果
***sum:对可迭代对象进行求和计算(可设置初始值)。
print(sum([1, 2, 3, 5 ,6])) #17
print(sum([1, 2, 3, 5 ,6],100)) #117 这后面不能再加上一个参数了
必须是可迭代对象,且参数最多为俩个,
***max:返回可迭代对象的最大值(可加key,key为函数名,通过函数的规则,返回最大值)。
ret = (max([1, 2, -5],key = abs)) #按照绝对值的大小,返回序列最大值
print(ret)
dic = {'a':3,'b':2,'c':1}
print(max(dic,key=lambda x:dic[x]))
# x为dic的key,lambda的返回值(即dic的值进行比较)返回最小的值对应的键
***min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值)。
print(min([1,2,3])) # 返回此序列最小值
ret = min([1,2,-5,],key=abs) # 按照绝对值的大小,返回此序列最小值
print(ret)
ic = {'a':3,'b':2,'c':1}
print(min(dic,key=lambda x:dic[x]))
x为dic的key,lambda的返回值(即dic的值进行比较)返回最大的值对应的键
和数据结构相关(24)
列表和元祖(2)
list:将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素)。
tuple:将一个可迭代对象转化成元祖(如果是字典,默认将key作为元祖的元素)。
相关内置函数
***reversed:将一个序列翻转,并返回此翻转序列的迭代器。
ite = reversed(['a',2,3,'c',4,2])
print(ite) # 直接打印出来的是一个可迭代器.
for i in ite:
print(i)#迭代器的取值方法next,for循环着俩种
#内部过程是,先将列表里面的元素,进行翻转,然后再返回一个迭代器,最后用迭代器的方式去取值
slice:构造一个切片对象,用于列表的切片。
li = ['a','b','c','d','e','f','g']
sli_obj = slice(3)
print(li[sli_obj])
字符串相关(9)
str:将数据转化成字符串。
format:与具体数据相关,用于计算各种小数,精算等。
#字符串可以提供的参数,指定对齐方式,<是左对齐, >是右对齐,^是居中对齐
print(format('test', '<20'))
print(format('test', '>20'))
print(format('test', '^20'))
* bytes:只能编码,不能解码. 将unicode---> 非unicode
bs = '老男孩'
bs1 = bytes(bs,encoding='utf-8' )
print(bs1)
bytearry:返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。
memoryview
*ord:输入字符找该字符编码的位置,按unicode找
print(ord('中')) #通过字符找出ascii的位置
*chr:输入位置数字找出其对应的字符,,按unicode找
print(chr(20013)) #通过数字找出ascii的位置
ascii:是ascii码中的返回该值,不是就返回\u.....
print(ascii('a'))
print(ascii('中')) #'\u4e2d'
***repr:返回一个对象的string形式(原形毕露)。
print(repr('{"name":"alex"}'))
# 返回: '{"name":"alex"}'
数据集合(3)
dict:创建一个字典。
set:创建一个集合。
frozenset:返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
相关内置函数(8)
len:返回一个对象中元素的个数。
***sorted:对所有可迭代的对象进行排序操作。
li = [1, -2, 2, -4, -5, 9, 7]
print(sorted(li)) #从小到大排序
print(sorted(li,reverse=True,key=abs)) #翻转排序
***enumerate:枚举,返回一个枚举对象。
li = ['老男孩','alex','wusir','taibai']
print(enumerate(li))
print('__iter__'in dir (enumerate(li)))
print('__next__'in dir (enumerate(li))) # True 说明这是一个迭代器
for k, v in enumerate(li):
print(k,v) #打印出序列号,加上对应的元素
for k, v in enumerate(li,2):
print(k, v) #可以选择从哪里开始打印
*all:可迭代对象中,全都是True才是True
print(all([1,2,True,0])) # False
*any:可迭代对象中,有一个True 就是True
print(any([1,"",0])) #True
zip:函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
*** zip 拉链方法,形成元祖的个数与最短的课迭代对象的长度一样
l1 = [1, 2, 3]
l2 = ['a', 'b', 'c', 5]
l3 = ('*', '**', (1,2,3),777)
l4 = ('0', '99',(1,2,3),666)
for i in zip(l1,l2,l3,l4):
print(i)
print('__iter__' in dir(zip(l1,l2,l3,l4)))
print('__next__' in dir(zip(l1,l2,l3,l4))) # 说明他的返回值也是一个迭代器
*** filter:过滤·
filter 过滤 通过你的函数,过滤一个可迭代对象,返回的是True
类似于[i for i in range(10) if i > 3]
def func(x):
return x % 2 == 0
ret = filter(func,[1,2,3,4,5,6,7])
print(ret)
for i in ret:
print(i)
filter 一个函数名,你想进行说明操作就进行说明操作,
把[1,2,3,4,5,6,7]当成一个参数,
传递给x,传进去,x = [1,2,3,4,5,6,7]
满足 x % 2 == 0的留下来
***map map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
def square(x):
return x ** 2
for i in map (square,([1,2,3,4])):
print(i)
print(map(square,([1,2,3,4,5])))