Python之旅的第3²天(内置函数、文件基本打开关闭)

巴壁虎 2020-03-03

今天其实遇到了一些不顺心的事情,耽搁了学习进程,但最终来说,老天爷是懂你的,今天心情不好,内容不多,但是是真他妹的难啊,测试出来的东西又和看的不一样,单元能和昨天一样,一觉睡醒,结果正常了,哈哈哈。

上干货,内置方法:

abs 取绝对值
# print(abs(-1))  #---->结果得:1
# 
# all 对可迭代对象中每个元素进行bool运算,全部为True或可迭代对象为空返回True
# test = [‘alex‘,‘10‘]
# print(all(test))   #返回结果为True
# test1 = []
# print(all(test1))  #返回结果为True
# test2 = [‘‘,18]
# print(all(test2))  #返回结果为Flase
# 
# any 对可迭代对象中每一个进行bool运算,只要其中一个为真,则返回True
# 与上面的all正好相反
# test = [‘‘,18]
# print(any(test))   #返回结果为True
# test1 = [‘‘,{},0]
# print(any(test1)   #返回结果为Flase
# 
# bin 十进制转为二进制
# hex 十进制转为十六进制
# oct 十进制转为八进制
# n = 2020
# # print(bin(n))    #0b11111100100  0b表示二进制数
# # print(hex(n))    #0x7e4          0x表示十六进制数
# # print(oct(n))    #0o3744         0o表示八进制数
# 
# #bytes 将字符串转换为字节形式
# name = ‘你好‘
# n = bytes(name,encoding = ‘utf-8‘)
# print(n)   #encoding表示转换为字节形式对应的码表
# #结果为b‘\xe4\xbd\xa0\xe5\xa5\xbd‘
# 
# #decode 将字节转换为文字,与上面bytes正好相反,转码解码参考一定要一样哦
# test_name = n.decode(encoding = ‘utf-8‘)
# print(test_name)
# 
# chr 输出数字对应的ASCII码
# print(chr(98))  #输出结果为b
# 
# dict 字典
# dir 显示某一对象下面的方法
# print(dir(tuple))   #---->输出元组对象下的所有方法
# 
# divmod 同时计算商和余数
# print(divmod(10,3))  #------>输出结果为(3, 1)
# 
# eval 提取字符串中包含的数据结构
# test = "{‘name‘:‘alex‘,‘age‘:‘18‘}"
# print(eval(test))   #----->{‘age‘: ‘18‘, ‘name‘: ‘alex‘}
# n = dict(eval(test))  #eval出来的是一个迭代器,稍微转一下才能正式调用方法
# for k , v  in n.items():
#     print(k,v)      #此时n便成为一个可迭代的字典
# #获取了其中包含的字典数据类型
# str_test = ‘1+2*(3/3-1)-2‘
# n = eval(str_test)
# print(n)     #---->得到运算结果-1.0
# 
# float 返回浮点值
# 
# hash 对可哈希的不可变类型进行哈希运算
# hash值的特点:固定不可变,不随字符串长度增加而明显增加,无法根据hash值反推文本内容,内容不变hash不会改变(可用于文件检测)
# 
# help 查看某一方法的详细使用解释
# print(help(map))   #输出内置函数map的解释,全是英文,我表示看不懂
# 
# isinstance 判断数据是否为对应数据类型
# print(isinstance(‘hello,world‘,str))    #返回结果为True
# 
# locals  显示当前所有的局部变量
# globals 显示当前所有的全局变量
# 
# zip 使两个可迭代对象一一对应,两个元素个数不同时,以少的为准,对应完了就结束了
# a = [‘a‘,‘b‘,‘c‘,‘d‘]
# b = [1,2,3]
# print(list(zip(a,b)))  #输出结果:[(‘a‘, 1), (‘b‘, 2), (‘c‘, 3)]
# 也可以使字典中k,v值一一对应
# test = {‘age‘: ‘18‘, ‘name‘: ‘alex‘}
# print(list(zip(test.keys(),test.values())))   #输出结果:[(‘age‘, ‘18‘), (‘name‘, ‘alex‘)]
# 
# max 求出最大值的作用
# 两个特点:输入可迭代对象,不同类型不能进行比较,默认从第一个值开始比较,如分出结果就不继续比下去了
# 相当于做了一个for循环进行挨个比较
# 
# max的初级阶段使用
# list_test = [1,24,56,3,100]
# print(max(list_test))   #输出结果100
# 
# max的中级使用
# list_test = [(‘a‘, 1), (‘b‘, 2), (‘c‘, 1)]
# print(max(list_test))   #输出结果为(‘c‘, 1)
# 
# 接下来是max的高阶模式,字典中比较数据
# pep_list = {‘alex‘:18,‘zjl‘:20,‘axin‘:40,‘zhaolei‘:18}
# print(list(max((zip(pep_list.values(),pep_list.keys())))))
# 输出结果为[40,‘axin‘]
# 
# max的最高级玩法,可以在后面输入方法
# 需求:求出下面字典中年龄最大的人
# list_test = [
#     {‘name‘:‘alex‘,‘age‘:18},
#     {‘name‘:‘zjl‘ ,‘age‘:28},
#     {‘name‘:‘zhao‘,‘age‘:33},
#     {‘name‘:‘kobe‘,‘age‘:40},
# ]
# 
# print(max(list_test,key = lambda dic : dic[‘age‘]))
# 输出结果为{‘name‘: ‘kobe‘, ‘age‘: 40}
# 
# 此处lambda dic : dic[‘age‘]的作用是将list_test中每个元素(即字典)中age对应的数值取出来
# 和下面的循环是一个意思
# rec = []
# for item in list_test:
#     rec.append(item[‘age‘])
# print(rec)    #取出了list_test中所有age对应的值
# 
# reversed 反转序列
# test = [1,2,3,4]
# print(list(reversed(test)))    #输出结果:[4, 3, 2, 1]
# print(test)            #输出结果:[1, 2, 3, 4]
# 
# ord 输出字符对应的ASCII码
# pow 可填写两个或三个参数
# print(pow(2,3))   #输出结果为8,等同于2的3次方
# print(pow(2,3,3))  #输出结果为2,等同于2的3次方,再除以3取余
# 
# round 对小数进行四舍五入
# print(round(4,436))  #输出结果为4
# 
# slice 切片保存   slice(起始,结束,步长)
# l = ‘hello‘
# s1 = slice(3,5,1)   #把切片保存到s1
# print(l[s1])    #输出结果为‘lo‘,等同于l[3,5]
# 
# sorted 排序,执行过程类似于max和min,默认从小到大排序,不同类型不能排序,其本质就是比大小
# sorted 也是可以导入方法的
# list_test = [
#     {‘name‘:‘alex‘,‘age‘:40},
#     {‘name‘:‘zjl‘ ,‘age‘:28},
#     {‘name‘:‘zhao‘,‘age‘:18},
#     {‘name‘:‘kobe‘,‘age‘:40},
# ]
# print(list(sorted(list_test,key = lambda dic : dic[‘age‘])))
# 
# sum 对可迭代对象进行求和
# type 查看数据对应的类型
# vars 没有参数时显示本地变量,或将所有方法对应为字典输出
# print(vars())   #用到的时候再详细补充
# __impot__ 导入文件,可导入字符串类型,import不能导入,但最终import都是引入了__import__

下面是介绍了几个简单的文件入门操作:

#文件的读取、书写、追加以及r+模式可读可写(建议浏览:https://www.cnblogs.com/linhaifeng/articles/5984922.html)
#r:只读  w:只写   a:追加   r+:可读可写

# 读取文件测试
# f = open(‘test‘,‘r‘,encoding = ‘utf-8‘)  #注意设置读取所参考的编码表
# test_r = f.read()    #读取文件内容
# print(test_r)
# print(f.readable())   #查看文件是否可读  返回True
#                       #文件从前到后只读取一次,前面出现了f.read,则此处光标已经在文档最后了
# print(‘第一行的内容是:‘,f.readline(),end = ‘‘)   #只读取文件中的一行内容,同时光标下移
# print(‘第二行的内容是:‘,f.readline(),end = ‘‘)
# f.close()

# 写入文件的测试
# 写入文件的内容必须都是字符串的形式,不然系统就会报错
# f = open(‘test‘,‘w‘,encoding = ‘utf-8‘)   #此处所输入的文件名如果在本级列表存在,则覆盖掉原有文件
#                                           #如果不存在则新创建一个文件
# print(f.writable())        #显示文件是否可写入  返回True
# f.write(‘hello world\n‘)   #写入内容
# f.writelines([‘alex\n‘,‘zhaolei皮一下‘,‘zhoujielun\n‘,‘kobe‘])   #貌似只有这个地方才可以传入列表
# f.close()

# 追加模式的操作(常用来作为访问日志,可用于记录网站访问的日志)
# f = open(‘test‘,‘a‘,encoding = ‘utf-8‘)
# print(f.readable())    #返回值为False
# f.write(‘第二行修改了‘)    #追加模式不能进行文件读取,将所输入的内容追加在文件最后
# f.close()

# r+可读可写模式
# f = open(‘test‘,‘r+‘,encoding = ‘utf-8‘)
# print(f.readable())    #可被读取,返回True
# print(f.writable())    #可被写入,返回True
#
# print(‘第一行的内容:‘,f.readline(),end = ‘‘)   #此时读取光标已经移动到第二行
# f.writelines(‘第二行前面皮一下\n‘)    #为什么只读取了一行,补充书写就到了最后面呢
#                                      #写入方式为直接覆盖的方式
# f.close()

#with自动打开和关闭
#书写格式
# with open(‘test‘,‘r‘,encoding = ‘utf-8‘) as f ,\
#     open(‘text_new‘,‘w‘,encoding = ‘utf-8‘) as d:
#     test_l = f.read()
#     print(test_l)   #不能直接打印f.read,出现了指针地址

睡觉喽。。。

相关推荐