Learn_Day6 lambda表达式、内置函数、open 函数
上节内容补充:
1、if isinstance(变量名, 数据类型) 判断变量为什么数据类型
2、在函数中,传递参数的时候传递的是引用
2、在函数中,传递参数的时候传递的是引用
3、在函数中,一旦遇到等号,重新在内存中创建
lambda表达式:
lambda 表达式
内置函数:
可以写简单的函数,f1 = f2, f3 = f4
1 # 1 2 def f1(): 3 return 123 4 print(f1, f1()) 5 # <function f1 at 0x10217c950> 123 6 f2 = lambda: 123 7 print(f2, f2()) 8 # <function <lambda> at 0x10217c9d8> 123 9 10 # 2 11 def f3(a1, a2): 12 return a1 + a2 13 print(f3, f3(1, 2)) 14 # <function f3 at 0x10217ca60> 3 15 f4 = lambda a1, a2: a1 + a2 16 print(f4, f4(1, 2)) 17 # <function <lambda> at 0x10217cae8> 3
内置函数:
abs 绝对值
# 绝对值 a = abs(-1) print("1.abs ==>> ", a) # 1.abs ==>> 1
all 循环参数,若每一个都为真,返回True,否则返回False(0,None,False,””,[],()都是假)
# 循环参数,若每一个都为真,返回True,否则返回False a = all(["", 11, "jksf"]) print("2.all ==>> ", a) # 2.all ==>> False
any 循环参数,若有一个都为真,返回True,否则返回False(0,None,False,””,[],()都是假)
# 循环参数,若有一个都为真,返回True,否则返回False a = any(["", 11, "jksf"]) print("3.any ==>> ", a) # 3.any ==>> True
ascii(对象) 到对象的类中寻找__repr__方法,获取返回值
# 到对象的类中寻找__repr__方法,获取返回值 class Foo(): def __repr__(self): return "hello" obj = Foo() r = ascii(obj) print("4.obj ==>> ", r) # 4.obj ==>> hello
bin 二进制
# 二进制 a = bin(10) print("5.bin ==>> ", a) # 5.bin ==>> 0b1010
oct 八进制
# 八进制 a = oct(10) print("6.oct ==>> ", a) # 6.oct ==>> 0o12
int 十进制
# 十进制 a = int(10) print("7.int ==>> ", a) # 7.int ==>> 10
hex 十六进制
# 十六进制 a = hex(10) print("8.hex ==>> ", a) # 8.hex ==>> 0xa
bool 布尔值,判断真假
# 布尔值,判断真假 a = bool("") b = bool(" ") print("9.bool ==>> ", "a:", a, "b:", b) # 9.bool ==>> a: False b: True
bytearray 字节列表
# 字节列表 a = bytearray("一个", encoding="utf-8") print("11.bytearray ==>> ", a) # 11.bytearray ==>> bytearray(b'\xe4\xb8\x80\xe4\xb8\xaa')
bytes 字节
# 字节 a = bytes("一个", encoding="utf-8") print("10.bytes ==>> ", a) # 10.bytes ==>> b'\xe4\xb8\x80\xe4\xb8\xaa'
chr();ord(): 在ASCIIA码表中字符与十进制互相转换chr():十进制(数字转换为字母);ord():字符(字母转换为数字)
a = chr(65) b = ord("F") print(a,b) # A 70
# 实例:随机验证码 import random temp = "" for i in range(6): # 生成0-9的随机数 num = random.randrange(0, 10) # 生成的数字为3或者7的时候 if num == 3 or num == 7: # 生成0 - 9的随机数 rad1 = random.randrange(0, 10) # 将随机数转换成字符串 c1 = str(rad1) temp += c1 else: # 否则 # 生成65-90的随机数 rad2 = random.randrange(65, 91) # 将随机数转换成大写字母 c2 = chr(rad2) temp += c2 print(temp)
callable 检查能否被执行,调用
# 检测能否被执行,调用 def f1(): pass f2 = 1223 a = callable(f1) b = callable(f2) print("12.callable ==>> ", "a:", a, "b:", b) # 12.callable ==>> a: True b: False
compile 编译
exec 执行Python代码或字符串,接受代码或者表达式,无返回值
eval 执行表达式病获取结果,有返回值
# compile(),# exec(),# eval()
1 # compile() # 编译 2 exec() # 执行Python代码或字符串,接受代码或表达式,无返值 3 s = "print(123)" 4 r = compile(s,"<string>","exec") # 第三位为编译模式,single:单行;eval:表达式;exec:与python一样的代码 5 print(r) # <code object <module> at 0x101337ed0, file "<string>", line 1> 6 # 执行python代码 7 exec(r) 8 9 # eval() # 执行表达式并获取结果,有返回值, 10 s = "8*8" 11 ret = eval(s) 12 print(ret) # 64 13 """
dict 字典
dir 快速查看对象提供了哪些功能
help 快速查看对象的帮助信息
divmod 计算用于得出商,余(多用于分页)
# 计算用于得出商,余 a = divmod(10, 3) print("13.divmod ==>> ", a) # 13.divmod ==>> (3, 1)
filter 循环第二个参数里面的每一个元素并执行函数,如果返回值为True,表示元素合法(用作筛选,过滤)# 返回值为true,将元素添加到结果中
def f2(a): if a > 22: return True list_1 = [11, 22, 33, 44, 55] ret = filter(f2, list_1) print(list(ret)) # [33, 44, 55] # 上述可写成lambda表达式为: list_1 = [11, 22, 33, 44, 55] result = filter(lambda a: a > 22, list_1) print(list(result)) # [33, 44, 55]
map (函数,可迭代的对象(即可以for循环的东西)) # 数据等批量处理 # 将函数返回值添加到结果中
li = [11, 22, 33, 44, 55] def f1(a): return a + 100 result = map(f1,li) print(list(result)) # [111, 122, 133, 144, 155] # 上述可写成lambda表达式为: li = [11, 22, 33, 44, 55] result = map(lambda a: a + 100, li) print(list(result)) # [111, 122, 133, 144, 155]
frozenset 等同于冻结的set
globals 获取全局变量
locals 获取局部变量
hash 用于Python内部,获取字典key的hash值,可以快速找到,占用内存小
id 查看内存地址
input 等待用户输入
int 强制转换为整数(默认十进制)
isinstance 查看某一个对象是否为另一个对象的实例
issubclass 查看某一个类是否为另一个类的派生类(子类)
iter 创建一个可以被迭代的对象
next 取迭代的值
# iter,# next
1 # iter,# next 2 obj = iter([11, 22, 33, 44]) 3 print("14.iter ==>> ", obj) 4 # 14.iter ==>> <list_iterator object at 0x102079c50> 5 6 r = next(obj) 7 print("15.next ==>> ", r) 8 # 15.next ==>> 11
len 查看长度:Python2+中按照字节计算;Python3+中按照字符计算
list 返回列表
max 求最大值
min 求最小值
sum() # 求和
memoryview 类:与内存地址相关
object 类:所有类的副类
open 对文件进行操作
ord 把一个字符串表示的字符转换为字符相对应的整数,适用于UNICODE字符
pow 求指数:平方,次方等
print 输出结果
range 范围
repr 执行类中的__repr__方法
reversed 反转
round 四舍五入
set 集合
slice 切片
sorted 排序(执行类内部的sort方法)
str 字符串
tuple 元组
type 类型
vars 获取当前模块可使用变量
zip #
# 1 l1 = ["I", 11, 22, 33] l2 = ["am", 44, 55, 66] l3 = ["R.H", 77, 88, 99] r = zip(l1, l2, l3) temp = list(r)[0] ret = " ".join(temp) print("16.zip ==>> ", "r:", r, "ret:", ret) # 16.zip ==>> I am R.H # 2 l1 = ["I", 11, 22, 33] l2 = ["am", 44, 55, 66] l3 = ["R.H", 77, 88, 99] r = zip(l1, l2, l3) l = [] for i in r: l.append(i) print("16.zip ==>> ", l) # 16.zip ==>> [('I', 'am', 'R.H'), (11, 44, 77), (22, 55, 88), (33, 66, 99)]
__import__() # 倒入模块
loads() # 将字符串转换成Python的基本数据类型
open函数:
一、打开文件:(两种方式)
1、f = open("文件名", '打开方式')
2、with open("文件名", '打开方式', encoding="uttf-8") as f:
打开模式:
# 'r'只读文件
# 'w'只写文件(文件不存在创建文件,文件存在清空后写入,不进行额外操作只打开也清空)
# 'a'追加(文件最后)
# 'x'创建(文件存在报错,不存在创建并写入内容)
# 'r+'可读可写,默认从最后一位写入 ==>> 读写(win默认打开方式为gbk)
# 'w+'可写可读(清空后写入) ==>> 写读
# 'a+'可写可读(文件最后追加) ==>> 写读
# 'x+'可写可读,文件存在报错,不存在创建并写入内容 ==>> 写读
# 'rb'按字节读取文件
# 'wb'按字节写文件(清空后写入)
# 'ab'按字节追加(文件最后)
# 'xb'文件存在报错,不存在创建并按字节写入内容
# 'w'只写文件(文件不存在创建文件,文件存在清空后写入,不进行额外操作只打开也清空)
# 'a'追加(文件最后)
# 'x'创建(文件存在报错,不存在创建并写入内容)
# 'r+'可读可写,默认从最后一位写入 ==>> 读写(win默认打开方式为gbk)
# 'w+'可写可读(清空后写入) ==>> 写读
# 'a+'可写可读(文件最后追加) ==>> 写读
# 'x+'可写可读,文件存在报错,不存在创建并写入内容 ==>> 写读
# 'rb'按字节读取文件
# 'wb'按字节写文件(清空后写入)
# 'ab'按字节追加(文件最后)
# 'xb'文件存在报错,不存在创建并按字节写入内容
# 'r+b' , 'w+b' , 'a+b' , 'x+b' 用法同'r+'等一样,只是按字节读取、写入
注:用with可以一次打开多个文件
with open("文件名", '打开方式', encoding="uttf-8") as f1, open("文件名", '打开方式', encoding="uttf-8") as f2:
View Code
1 # 1-1 2 f = open("ha.txt") # 打开文件 ==>> 打开方式默认"只读" 3 data = f.read() # 读取文件 4 f.close() # 关闭文件 5 print(data) # 输出 6 # 1-2 7 f = open("ha2.txt", "w") 8 f.write("121111111111") 9 f.close()
二、操作文件:
read() # 无参数,读全部,有参数:b按字节;无b按字符
tell() # 获取当前指针位置(字节)
seek() # 指针跳转到指定位置(字节)
write() # 写数据:有b按字节,无b按字符
close() # 关闭
fileno # 文件描述符
flush # 强刷
readbale # 判断是否可读
readline # 仅读取一行
truncate # 截断数据(指针后内容清空)
for line in **: #循环每一行
三、关闭文件:
1、f.close
2、用with打开操作完成自动关闭