python基础(2)
1、lambda函数
学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,函数同样有简单的表示方法
# ###################### 普通函数 ###################### # 定义函数(普通方式) def func(a): return a + 1 # 执行函数 result = func(123) # ###################### lambda ###################### # 定义函数(lambda表达式) my_lambda = lambda a : a + 1 # 执行函数 result = my_lambda(123)
2、python的部分内置函数
abs,取绝对值
i = abs(-152) print(i) 152
all,循环参数,如果所有元素的值都为真,返回真,否则假
a = all([1,1,0]) print(a) False
any,只要有一个为真,则为真
a = any([0,0,0,1]) print(a) True
ascii,去对象的类中找到__repr__方法并且获取其返回值
class a: def __repr__(self): return "hello" b = a() c = ascii(b) print(c) hello
bin(),oct(),int(),hex(),分别表示将十进制数字转换为二进制,八进制,十进制,十六进制,下边介绍一种16转10的写法
i = int("b",base = 16) print(i) 11
chr(),传入一个数字,它会把数字转为二进制然后获取这个二进制数字在ASCII码中对应的字符或符号
a = chr(77) print(a) M
ord则是字母或字符对应的数字
a = ord("c") print(a) 99
查看一个对象是否可执行,如果是返回真,否则假。
def f1(): return 123 r = callable(f1) print(r) True
求俩数字的商和余数
r = divmod(10,3) print(r) (3, 1)
eval,将字符串转为表达式,他是有返回值得
i = eval("1+3") print(i) 4
exec是没有返回值的,用来执行比较复杂的字符串表达式
exec("for i in range(10):print(i)") 0 1 2 3 4 5 6 7 8 9
filter,filter(函数,可迭代对象),以可迭代对象里的元素为函数的参数进行迭代运行,筛选为真的元素
def f1(x): if x > 22: return True else: return False r = filter(f1,[11,22,33,44,55]) for i in r: print(i) 33 44 55
可结合lambda,写法如下
r = filter(lambda x: x > 22,[11,22,33,44,55]) for i in r: print(i)
map,用一个函数对后边的可迭代对象循环进行操作
r = map(lambda x: x + 100,[11,22,33,44,55]) for i in r: print(i) 111 122 133 144 155
globals()所有全局变量,locals()获取所有局部变量
hash()把一个对象转换为哈希值,这样可以节省内存
i = hash("ertt34rwef34tsefw4t3fwef34twefwegt4te4t") print(i) 6916591429187914356
iter(),创建一个可迭代对象,然后用next()一个个循环取值,
i = iter([11,22,33,44,55]) r = next(i) print(r) r = next(i) print(r) r = next(i) print(r) 11 22 33
取最大值和最小值的方法
i = [11,22,33,44,55,66,77,88,] a = max(i) b = min(i) print(a,b) 88 11
求一个数的多少次方
i = pow(2,5) print(i) 32
reversed,把有序 的数据倒序迭代
i = reversed([11,22,33]) for a in i: print(a) 33 22 11
round,四舍五入一个数字
i = round(2.3) print(i) 2
3、文件的操作
open函数,该函数用于文件处理
操作文件时,一般需要经历如下步骤:
- 打开文件
- 操作文件
一、打开文件
1
|
文件句柄 = open ( '文件路径' , '模式' ) |
打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。
打开文件的模式有:
- r ,只读模式【默认】
- w,只写模式【不可读;不存在则创建;存在则清空内容;】
- x, 只写模式【不可读;不存在则创建,存在则报错】
- a, 追加模式【不可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+, 读写【可读,可写】
- w+,写读【可读,可写】
- x+ ,写读【可读,可写】
- a+, 写读【可读,可写】
"b"表示以字节的方式操作
- rb 或 r+b
- wb 或 w+b
- xb 或 w+b
- ab 或 a+b
注:以b方式打开时,读不需要提供编码参数,写则需要,下边是写入的示例
= open("hehe","wb") f.write(bytes("zhongg",encoding = "utf-8")) f.close()
文件操作的常用方法说明
def close(self, *args, **kwargs): # real signature unknown 关闭文件 pass def fileno(self, *args, **kwargs): # real signature unknown 文件描述符 pass def flush(self, *args, **kwargs): # real signature unknown 刷新文件内部缓冲区 pass def isatty(self, *args, **kwargs): # real signature unknown 判断文件是否是同意tty设备 pass def read(self, *args, **kwargs): # real signature unknown 读取指定字节数据,如果打开方式为二进制方式就是字节数,如果不是就是字符数。 pass def readable(self, *args, **kwargs): # real signature unknown 是否可读 pass def readline(self, *args, **kwargs): # real signature unknown 仅读取一行数据 pass def seek(self, *args, **kwargs): # real signature unknown 指定文件中指针位置 pass def seekable(self, *args, **kwargs): # real signature unknown 指针是否可操作 pass def tell(self, *args, **kwargs): # real signature unknown 获取指针位置 pass def truncate(self, *args, **kwargs): # real signature unknown 截断数据,仅保留指定之前数据 pass def writable(self, *args, **kwargs): # real signature unknown 是否可写 pass def write(self, *args, **kwargs): # real signature unknown 写内容 pass def __getstate__(self, *args, **kwargs): # real signature unknown pass def __init__(self, *args, **kwargs): # real signature unknown pass @staticmethod # known case of __new__ def __new__(*args, **kwargs): # real signature unknown """ Create and return a new object. See help(type) for accurate signature. """ pass def __next__(self, *args, **kwargs): # real signature unknown """ Implement next(self). """ pass def __repr__(self, *args, **kwargs): # real signature unknown """ Return repr(self). """ pass
读写都会修改指针,关闭文件指针归零。
可以以迭代的方式去取读比较大的文件,(因为读文件要先读到内存,如果直接read,文件过大会撑爆内存)。
f = open("hehe","r") for i in f: print(i) D:\Users\Administrator\AppData\Local\Programs\Python\Python35\python3.exe D:/Users/Administrator/PycharmProjects/txt/123.py sferf sfsf sfsf sfwsf
循环文件内的每个元素
f = open("hehe","r") a = f.read() f.seek(0) for i in a: print(i) s f e r f
with open的用法
f = open("hehe","r") with open("hehe","r") as f: #第二行等同于第一行,区别在于第二行执行完,会自动关闭文件,而第一行则需要f.cloes,with还支持同时打开两个文件。#