Python函数篇(3)-内置函数、文件处理
1.内置函数
上一篇文章中,我重点写了reduce、map、filter3个内置函数,在本篇章节中,会补充其他的一些常规内置函数,并重点写max,min函数,其他没有说明的函数,会在后面写到类和面向对象的文章中具体写出。
abs()
- a=-2
- print(abs(a)) 取绝对值,传入变量的数据类型必须是数字。否则程序报错
- 运行结果:
- 2
all()
- a=[1,2,3]
- print(all(a)) 遍历传入的每一个元素,返回一个布尔值,如果元素中存在0,None或空,则返回结果为False,否则返回Ture;如果传入的可迭代对象为空,仍然返回Ture
- 运行结果:
- True
any()
- a=[1,2,3,0]
- print(any(a)) 遍历传入的每一个元素,返回一个布尔值,元素中只要有一个为真,就会返回Ture.
- 运行结果:
- True
bin();hex();oct()
- # print(bin(2)) 十进制转二进制
- # print(hex(2)) 十进制转十六进制
- # print(oct(2)) 十进制转八进制
bool()
- print(bool(0)) 返回一个布尔值(0,None或空,返回False,否则,返回Ture)
- 运行结果:
- False
bytes()
- print(bytes("你好",encoding="utf-8").decode("utf-8")) 将字符串转化为字节,需要使用关键字encoding指定编码类型,如想返回,通过decode解码,默认解码类型为utf-8
- 运行结果:
- 你好
chr();ord()
- print(chr(97)) 将传入的值按ASCII码表输出
- print(ord("a")) 输入一个字符,显示出在ASCII表中对应的值是什么
- 运行结果:
- a
- 97
dir();help()
- print(dir(chr)) 目录,在chr函数后传入另一个函数,可以显示出传入函数内部都有哪些方法
- help(all) 与dir()不同,help中传入参数,可以查看该函数的具体使用方法,不过一般通过ctrl加鼠标左键,点击函数就可以查看。
divmod()
- print(divmod(10,3)) 取商得余数,这个方法可以用来做分页,后面会应用到
- 运行结果:
- (3, 1)
eval()
- name="[1,2,3,]"
- print(name)
- print(eval(name)) 第一个功能:将字符串中的数据结构提取出来
- 运行结果:(对比一下区别)
- [1,2,3,]
- [1, 2, 3]
- name="3*2*1"
- print(eval(name)) 第二个功能:将字符串中数学运算运行一遍
- 运行结果:
- 6
hash():可hash的就是不可变的数据类型,对于一个变量来说,只要改变量的值未发生变化,那么它对应的hash值也是不变的
id():打印对象的内存地址
isinstance()
- print(isinstance("czp",str)) 判断数据类型
- 运行结果: 判断"czp"是否是字符串类型,返回值的类型为布尔值
- True
global():打印都有哪些全局变量
locals():打印都有哪些局部变量
pow()
- print(pow(10,3)) #10**3,还可以传入3个参数,如pow(10,3,2) 意思就是10**3%2
- 运行结果:
- 1000
reversed()
- name=[1,2,3,4]
- print(list(reversed((name)))) 将列表中的元素 反转输出
- 运行结果:
- [4, 3, 2, 1]
round():四舍五入,传入两个参数
sorted():排序,排序的过程其实就是比较大小,使用方法参考max(),临时排序。sort():永久性排序,列表元素顺序无法恢复。
str():转变为字符串形式
type():查看数据类型
vars():将列表转化为字典,如果没有参数,就相当于locals的用法,打印的是局部变量的值,如果传入一个函数,会将该函数下的所有方法以字典的形式打印出来
下面主要讲3个内置函数,zip();max();min()的用法
1.zip()
- print(list(zip(("a","b","c"),(1,2,3)))) 传入两个序列类型的参数(列表,元组等),输出一一对应的结果,传入的两个序列元素数量不相等,程序也并不会报错
- 运行结果:
- [('a', 1), ('b', 2), ('c', 3)]
2.max()
max()函数中必须传入一个可迭代的对象,(可迭代对象可以理解为可以使用for循环的对象)取出每一个元素进行比较,在比较的时候,从元素的第一个位置从左往右对每一个元素进行比较,如果在某一位比出了大小,后面的元素就不需要再进行比较(不同数据类型之间不能进行max比较,程序会报错)
先说一个最简单的使用方法:取出字符串中最大的元素
- num=[1,2,3,4]
- print(max(num))
- 运行结果:
- 4
而如果数据类型是一个字典呢?我要取出name={"1_age":8,"2_age":19,"3_age":17}这个字典中,年龄最大的那个key,这时该怎么做?
- name={"1_age":8,"2_age":19,"3_age":17}
- print(max(name))
- 运行结果:
- 3_age
显然 ,直接用max()函数计算出来的最大值是不对的,这是因为max()函数在判断字典数据类型的时候,默认是对Key进行比较,需求是比较年龄,然后输入该年龄对应的Key,此时可以用上面提到的zip方法
- name={"1_age":18,"2_age":19,"3_age":17}
- print(max(zip(name.values(),name.keys())))
- 运行结果:
- (19, '2_age')
对于列表中嵌套字典的,用这种方法:
max()中可以传入两个值,(*args,key=None),默认key是None,我们也可以通过匿名函数,指定需要比较的字典values
- name=[{"name":"c","age":18},
- {"name":"z","age":3},]
- print(max(name,key=lambda dict:dict["age"]))
运行结果:
{'name': 'c', 'age': 18}
3.min():取最小值,使用方法与max()相同,就不重复介绍了
2.文件操作
文件的处理流程简单来说就三步:1)打开一个文件(通过open()函数,文件打开方式主要是"r"(只读)、"w"(只写)、"a"(读写)三种模式,默认的打开方式只读模式
2)通过文件句柄执行相关操作
3)关闭文件
通常读取一个文件的正常流程如下:假设现在有一个尼古拉斯赵四的文件
- f=open("尼古拉斯赵四",encoding="utf-8") 打开文件方式:open("文件名”,"打开方式(r\w\a)","编码方式"),默认是只读(r)模式
- print(f.read()) 通过open()打开文件后,使用文件名.read()的方式读取内容
- f.close()
- 运行结果:
- 输出的就是"尼古拉斯赵四" 这个文件中的内容 在读取文件内容后,使用close()方法 关闭文件释放内存
r
以上是正常的读取一个文件的流程,r(只读模式),顾名思义就是只有读的权限,不可以修改文件,如下是读取文件的其他方法
- f.readable() 判断是否是只读
- f.readline() 一次读一行,通过这种方式读取出来会有换行,因为文件每一句后会加回车,可以在最后加end=”“来取消换行
- f.readlines() 一次性读取全部文件内容,放在一个列表中
w
写模式,可以修改文件,但不可以读取源文件,如果文件存在,会直接清空掉文件中的所有内容,文件不存在,会新建一个新的文件(慎用)
- f=open("尼古拉斯赵四","w",encoding="utf-8")
写文件的一些常规方法如下:
- f.write("写入的内容\n") 内容必须是字符串,如果写成f.write(3),程序会报错
- f.writable() 判断是否只写
- f.writelines([写入的内容]) 写入一个列表的内容,输出的内容是列表形式
a
追加模式,在此模式下,可通过f.write()方法 将内容写到最后
r+
可读可写,写的时候,就是从光标的位置开始写入,解释一下这个意思:所谓的从光标写入,在没有读取一个文件的时候,光标的位置就是在最前面,而如果我通过readline方法读取了一行内容后,光标位置实际上就是移动到了第一行的最后面,而此时我再执行write()操作,内容就会插入到第一行的后面。这个一定要理解。
其他的方式还有像w+,a+等等,感兴趣的自己可以了解一下
最后在本篇文章中再提最后一个点,如果每次都用close()关闭文件会不会觉得很麻烦?用以下方式完美的避免这一问题:
- with open("尼古拉斯赵四","r",encoding="utf-8") as f: 通过with open() as 文件名的方式,执行完操作后会自动关闭文件以释放内存
- print(f.read())
Python函数篇(3)-内置函数、文件处理的更多相关文章
- python 基础篇 15 内置函数和匿名函数
------------------------>>>>>>>>>>>>>>>内置函数<<< ...
- python的68个内置函数
内置函数 内置函数就是python给你提供的, 拿来直接用的函数, 比如print., input等. 截止到python版本3.6.2 python一共提供了68个内置函数. #68个内置函数 # ...
- python中68个内置函数的总结
内置函数 内置函数就是python给你提供的, 拿来直接用的函数, 比如print., input等. 截止到python版本3.6.2 python一共提供了68个内置函数. #68个内置函数 # ...
- Python装饰器及内置函数
装饰器 听名字应该知道这是一个装饰的东西,我们今天就来讲解一下装饰器,有的铁子们应该听说,有的没有听说过.没有关系我告诉你们这是一个很神奇的东西 这个有多神奇呢? 我们先来复习一下闭包 def fun ...
- python 类(object)的内置函数
python 类(object)的内置函数 # python 类(object)的内置函数 ### 首先 #### 以__双下划线开头的内置函数 __ #### __往往会在某些时候被自动调用,例如之 ...
- Python标准库:内置函数hasattr(object, name)
Python标准库:内置函数hasattr(object, name) 本函数是用来判断对象object的属性(name表示)是否存在.如果属性(name表示)存在,则返回True,否则返回False ...
- python — lambda表达式与内置函数
目录 1 lambda表达式 (匿名函数) 2 内置函数 1 lambda表达式 (匿名函数) 用于表示简单的函数 lambda表达式,为了解决简单函数的情况: def func(a1,a2): == ...
- python中常见的内置函数
map #自定义map函数 def map_test(func, list): res = [] for item in list: res.append(func(item)) return res ...
- python字符串——"奇葩“的内置函数
一.前言 python编程语言里的字符串与我们初期所学的c语言内的字符串还是有一定不同的,比如python字符串里的内置函数就比语言的要多得多:字符串内的书写格式也会有一点差异,例:字符串内含有引 ...
- python 函数 装饰器 内置函数
函数 装饰器 内置函数 一.命名空间和作用域 二.装饰器 1.无参数 2.函数有参数 3.函数动态参数 4.装饰器参数 三.内置函数 salaries={ 'egon':3000, 'alex':10 ...
随机推荐
- 关于docker使用的几个小问题(一)
由于刚接触docker踩了几个坑,希望本文对网瘾少年有所帮助. Docker分CE版(社区版)和EE版(商用版),具体安装流程参考文档介绍,在此不再赘述.下面分Windows和Linux分别踩坑: 一 ...
- 2017上海QCon之旅总结(中)
本来这个公众号的交流消息中间件相关的技术的.上周去上海参加了QCon,第一次参加这样的技术会议,感受挺多的,所以整理一下自己的一些想法接公众号和大家交流一下. 三天的内容还挺多的,原计划分上下两篇总结 ...
- javascript 之作用域链-07
复习作用域 上一节我们说到作用域:是指变量可以访问的范围,他规定了如何查找变量,以及确定当前执行代码对变量的访问权限:也说到静态作用域即词法作用域,是在编译阶段决定变量的引用(由程序定义的位置决定,和 ...
- velocity的基础使用
velocity的基本使用要求:掌握jsp的jstl技术,因为velocity的用法和jstl非常相似.语法上差别不大,但是velocity的示例明显比jstl少,解释也少,所以使用velocity必 ...
- 使用chart和echarts制作图表
前 言 chart.js是一个简单.面向对象.为设计者和开发者准备的图表绘制工具库.它可以帮你用不同的方式让你的数据变得可视化.每种类型的图表都有动画效果,并且看上去非常棒,即便是在retina ...
- Codeforces Round #386 (Div. 2) C. Tram
C. Tram time limit per test 1 second memory limit per test 256 megabytes input standard input output ...
- js图片延迟加载如何实现
这里延迟加载的意思是,拖动滚动条时,在图片出现在浏览器显示区域后才加载显示. 大概的实现方式是: 在页面的load没有触发之前,把所有的指定id的元素内的img放入到imgs中,将所有的图片的sr ...
- mysql +keeplive+drbd高可用架构
1MySQL+DRBD+keepalived高可用架构 DRBD(DistributedReplicatedBlockDevice)是一个基于块设备级别在远程服务器直接同步和镜像数据的开源软件,类似于 ...
- HBase流量限制和表负载均衡剖析
1.概述 在HBase-1.1.0之前,HBase集群中资源都是全量的.用户.表这些都是没有限制的,看似完美实则隐患较大.今天,笔者就给大家剖析一下HBase的流量限制和表的负载均衡. 2.内容 也许 ...
- transition过度
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...