python—内置函数和匿名函数
内置函数
迭代器\生成器(3个):
1.range():步长,范围
range(100) #[0,99] [0,100)
range(10,100) #[10,99]
range(10,100,2) #[10,99]隔一个取一个
#可迭代对象 最好循环取结果
2. iter():可迭代对象变成迭代器
3.’next:激活迭代器,取下一个值
在python里,要尽量少去调用双下方法
def iter(iterable):
return iterable.__iter__() print([1,2,3].__iter__())
iterator = iter({1,2,3,4})
def next(iterator): return iterator.__next__() print(next(iterator))
作用域(2个):
1.globals():全局作用域中的变量
2.locals():局部作用域中的变量
PS:在全局执行这两个方法,结果相同,在局部执行,locals表示函数内的名字,globals始终不变
def func(): x = 1 y = 2 print(locals()) print(globals())
func()
其他:
字符串代码(3个):
1.eval(有返回值)
2.exec(没有返回值)
3.complie:当需要对某一个字符串数据类型的python代码多次执行的时候,就是用compile先编译一下
code1 = 'for i in range(0,10): print (i)'
compile1 = compile(code1,'','exec') #编译
print(compile1) #code
结果:
<code object <module> at 0x0000000002685150, file "", line 1>
code2 = '1 + 2 + 3 + 4'
# compile2 = compile(code2,'','eval')
# print(eval(compile2))
结果:10
name = 'egon'
# code3 = 'name = input("please input your name:")'
# compile3 = compile(code3,'','single')
# exec(compile3)
# print(name)
结果:please input your name:
直接拿来执行的方式一定不要随便,如果非用不可,你也要做最起码的检测
输入和输出(2个):
1.输入input(">>>>")
2.输出print()
a = input('>>>') # print(11232) # print(11232,1234,sep='***') # print('ajkdshkljaf',end=' ') # print('sagjkg') # print(12,34,56,sep=',') # print('%d,%d,%d'%(12,34,56)) 结果:
11232
11232***1234
ajkdshkljaf sagjkg
12,34,56
12,34,56
文件相关:
open打开一个文件,返回一个文件句柄
f = open('print_test','a',encoding='utf-8')
# print(12146798,file=f)
模块导入:
import 后面加模块
import time
# for i in range(0,101,2):
# time.sleep(0.1)
# char_num = i//2 #打印多少个'*'
# per_str = '\r%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)
# print(per_str,end='', flush=True)
内存相关:
hash的结果是一个数字(可变的不能用,列表,字典,集合)
在python的一次执行中,对于相同的可hash对象来说,得到的是相同的数字
print(hash('dsaklfksgd'))
print(hash((1,2,3,4,5,6)))
结果:
4820752878243118402
-14564427693791970
id('assdsd')身份运算 is is not 不仅比较值的大小还比较内存地址是否一致
帮助:
1.help:进入help模式help()输入q是退出,括号里可以指定查询的对象的帮助信息
调用相关:
2.callable():判断一个对象是否可以调用
查看内置属性:
dir():print(dir())括号内是用来查找内置属性的对象
print(dir(_builtins_)) 所有内置函数
基础数据:
数据类型:
1.bool() 布尔值 2.int() 整型 3.float() 浮点 4.complex() 复数
进制转换(只有在强转中会用):
1.bin():二进制转换
2.oct(): 八进制转换
3.hex():十六进制转换
数学运算:
1.abs():计算绝对值
2.divmod():返回(商,余)
ret = divmod(101,10)
# print(ret) #(商,余)
3.round():精确到小数点几位
print(round(2.32342342,3))
4.pow():幂运算
print(pow(2,3)) #幂运算
# print(pow(2,3,5)) #最后一位取余
5.sum():求和,(前面放迭代器,可以从什么数开始)
print(sum([1,2,3,4,5],'本钱'))
6.max():计算最大值
print(max([1,2,3,-4],key=abs))# key里面放了什么函数条件就可以判断以什么条件最小
7.min():计算最小值
print(min([1,2,3,-4],key=abs))
min和max可以接受散列的值,和可迭代的对象
8.default():如果可迭代对象为空,设置默认的最小值
数据结构:
序列(列表(list),元祖(tuple)):
1.reversed():反转,参数是序列,返回的是反序迭代器
2.slice():切片
字符串:
1.str():强转
2.format():用来设定格式的函数,指定返回值的格式,前面是数据,后面是在什么位置
3.bytes():转二进制
4.bytearray():
5.memoryview():只接受字节
6.ord():字符转换成数字(unicode)
7.chr():数字转换字符
8.ASCII():字符转换成编码
9.repr():可以将字符串按照字符串格式打印出来
数据集合:
1.字典:dict()
2.集合:(1)set(): 2.frozenset():不可变集合
内置函数:
1.len():计算长度
2.enumerate():加序号
se = {'computer':10000,'umbrella':200}
# for k in se:
# print(k,se[k])
for num,goods in enumerate(se,1):
print(num,goods,se[goods])
3.all():判断是否有布尔值,是False ,后面直接加可迭代对象
4.and():判断是否有布尔值,是True,后面直接加可迭代对象
5.zip():拉链,将两个列表值配对,可以多个列表一起拉
6.filter():过滤器
def func(n):
# if n%2 == 0:
# return True
# lst = [1,2,3,4,5,6,7]
# ret = filter(func,lst)
# for i in ret:
# print(i)
7.map():遍历
lst = [1,2,3,4,5,6,7]
# def func(item):
# return item*item
# print(list(map(func,lst)))
8.sorted():排序
匿名函数——lambda表达式:
—— 一句话的python
—— 三元运算
—— 各种推导式,生成器表达式
—— lambda表达式
calc2 = lambda n,m : n**m
# my_max = lambda n,m : n if n>m else m
# print(calc2(10,2))
# print(my_max(10,2))
可以传多个参数,也可以传了不用
匿名函数不管逻辑多么复杂,只能写一行,逻辑执行结束后的内容就是返回值
def multipliers():
return [lambda x:x*i for i in range(4)]
print([m(2) for m in multipliers()])
结果[6,6,6,6]
def multipliers():
return (lambda x:x*i for i in range(4))
print([m(2) for m in multipliers()])
结果[0,2,4,6]