Python3基础(3)集合、文件操作、字符转编码、函数、全局/局部变量、递归、函数式编程、高阶函数
---------------个人学习笔记---------------
----------------本文作者吴疆--------------
------点击此处链接至博客园原文------
1.集合
集合是无序的、不重复的数据组合,主要作用是:关系测试、去重等,用{}表示,set() 创建集合。
--------------关系测试------------------------------
intersection() 求集合交集 运算符为 &
union() 求集合并集 运算符为 |
difference() 求集合差集 运算符为 -
issubset() 判断是否为子集
issuperset() 判断是否为父集
symmetric_difference() 求对称差集,即并集-交集 运算符为 ^
isdisjoint() 若两集合无交集返回True


--------------基本操作------------------------------
add() 向集合增加1个元素
update() 向集合增加多个元素,括号内为列表
remove() 删除集合1个元素,该元素必须存在,否则报错
len() 集合长度
in 判断元素是否在集合内
not in 判断元素不否在集合内
copy() 浅复制

pop() 删除任意某个元素并返回该元素
discard() 删除集合1个元素,该元素可以不存在,不存在则不做任何操作,存在则删除

2.文件操作
f = open(文件名,打开文件模式) 打开文件返回文件句柄,有时根据情况需指定encoding,也有with open() as f: 这种方式(称为:管理上下文)当with代码块执行完毕,内部将自动关闭并释放资源
f.read() 一次读取文件全部内容,若连续两次f.read()则第2次读不到任何东西,因为第一次read后光标已经至末尾 模式可选为“r”
f.write() 向文件写入内容(创建新文件,若有同名文件则覆盖) 模式可选为“w”
f.write() 向文件中末尾追加内容 模式选为“a”
f.readline() 读取文件一行
f.readlines() 一次性按行读取文件,返回列表(每行为一个元素),适合处理小文件
for line in f: 大文件可逐行读取,内存中只保留一行数据,效率最高(文件变成迭代器)
f.tell() 文件句柄指针位置(可理解为光标位置,按字符计数)
f.seek() 设置句柄指针位置,如f.seek(0) 则光标移至文件开头
f.encoding 该文件的编码
f.name 该文件的名字
f.isatty() 判断是否为终端设备,如打印机
f.flush() 强制刷新,io往文件写的时候是等到待写入文件达到buffer_size才一起写入,f.flush()可以强制刷新,直接即时写入
f.truncate() 截取x个字符
f.close() 关闭文件句柄
----------------------------------------打开文件模式------------------------------------------
r 只读,若文件不存会报错
w 只写,若文件不存在则自动创建再写入,会覆盖文件
a 追加,若文件不存在则自动创建再写入,不会覆盖文件,但在末尾追加
r+ 读写,若文件不存会报错,写会覆盖文件(比如读三行后后再写,写的时候不是从光标当前位置写了,而是在末尾追加写)
w+ 写读,若文件不存在则自动创建再写入,写会覆盖文件
a+ 追加,若文件不存在则自动创建再写入,写不会覆盖文件,但在末尾追加
wb,rb类似于w、r,但用于二进制文件(如视频)或Python3中网络传输
---------------------------------------------------------------------------------------------------------
3.文件修改
上述文件操作中修改文件会将原文件覆盖
方法一:类似于vim先将文件加载到内存里再修改,效率低
方法二:读文件修改后写入一个新的文件,相比较效率更高
注意字符串操作有返回值,原字符串值不被修改

4.进度条(缓冲flush)

5.字符转编码

-----------------------------------Python2------------------------------------
系统默认编码 sys.getdefaultencoding()为ASCII编码
程序中若带有中文需在开头申明UTF-8编码
UTF-8字符串str1转为GBK:str1.decode("utf-8").encode("gbk")
GBK字符串str2转为UTF-8:str2.decode("gbk").encode("utf-8")
其余未涉及的转编码类似,都要经过unicode
-----------------------------------Python3--------------------------------------
默认编码为Unicode,赋值一个字符串则为Unicode编码,字符转编码与Python2相同
Python3中encode()不仅将字符编码集改了,还会转成bytes类型
如开头申明 # -*-coding:gbk-*-则意味着文件编码为gbk 赋值一个字符串仍为Unicode编码,而不是gbk
6.函数
------------------------------三种编程范式------------------------------
面向对象:类 class
面向过程:过程 def,没有返回值的函数,Python中隐式地返回None
函数式编程?:函数 def,代码重用、保持一致性、可扩展性
-------------------------------------------------------------------------------
函数内return后不再执行代码
若函数return多个值,而调用函数赋给1个变量,则返回值以tuple形式返回
位置参数调用、关键参数调用,两种方式混合时关键参数不能写在位置参数前面

默认参数,定义形参时同时赋默认值,调用函数时默认参数非必须传递赋值
----------------------------------函数的非固定参数------------------------------
即实参传递数目不固定,形参如何声明?参数组
实参转换为元组

实参转换为字典,实参需以关键参数形式写


7.获取系统当前时间
import time
time_format = "%Y-%m-%d %X"
time_current = time.strftime(time_format)
8.全局/局部变量
局部变量只在函数内部生效,其作用域为对应定义的函数
全局变量应在程序一开始顶级定义,其作用域为整个程序
允许函数内部有与全局变量同名的变量,在该函数内部该变量起作用,在其余地方全局变量起作用
若想在函数内部改变全局变量的值,可在函数内部用global声明,不建议这么做,易造成程序逻辑混乱
除了整数、字符串未加global时不能在函数内部修改全局变量,其余像(列表、字典、集合...)均可不加global就能在函数内部修改全局变量!
9.递归
如果一个函数在内部调用自身,该函数就是递归函数
------------------------递归特性------------------------
必须有一个明确的结束条件(最大递归999次)
每次进入更深一层递归时,问题规模相比上次递归都应有所减少
递归效率不高,递归层次过多会导致栈溢出(函数调用是通过栈stack这种数据结构实现的)

10.函数式编程(lisp、hashshell、erlang)
虽然可以归结到面向过程的程序设计,但其思想更接近数字计算。由于我们在Python中常定义函数中涉及一些逻辑判断(变量状态不确定),
使得输入确定,输出不确定,即对于同样的输入,可能得到不同的输出,这种函数有副作用。而函数式编程更侧重数字计算,输入确定,
输出确定。Python对函数式编程提供部分支持,由于Python允许使用变量,因此,Python不是纯函数式编程语言。
11.高阶函数
一个函数接收另一个函数作为参数,这种函数称为高阶函数

Python3基础(3)集合、文件操作、字符转编码、函数、全局/局部变量、递归、函数式编程、高阶函数的更多相关文章
- [Python3] 035 函数式编程 高阶函数
目录 函数式编程 之 高阶函数 1. 引子 2. 系统提供的高阶函数 3. functools 包提供的 reduce 4. 排序 函数式编程 之 高阶函数 把函数作为参数使用的函数,叫高阶函数 1. ...
- Python基础-week03 集合 , 文件操作 和 函数详解
一.集合及其运算 1.集合的概念 集合是一个无序的,不重复的数据组合,它的主要作用如下 *去重,把一个列表变成集合,就自动去重了 *关系测试,测试两组数据之前的交集.并集.差集.子集.父级.对称差集, ...
- C# 基础 字符串 集合 文件操作
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- python开发基础04-函数、递归、匿名函数、高阶函数、装饰器
匿名函数 lamba lambda x,y,z=1:x+y+z 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函 ...
- python3 第二十章 - 函数式编程之Higher-order function(高阶函数)
什么是高阶函数?把函数作为参数传入或把函数做为结果值返回,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式.函数式编程的特点: 函数本身可以赋值给变量,赋值后变量为函数: 允许将函数本身 ...
- Scala 基础(十一):Scala 函数式编程(三)高级(一)偏函数、作为参数的函数、匿名函数、高阶函数
1 偏函数 1)在对符合某个条件,而不是所有情况进行逻辑操作时,使用偏函数是一个不错的选择 2)将包在大括号内的一组case语句封装为函数,我们称之为偏函数,它只对会作用于指定类型的参数或指定范围值的 ...
- python基础之 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...
- Python基础2 列表 元祖 字符串 字典 集合 文件操作 -DAY2
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...
- python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数
目录: 编码的补充 文件操作 集合 函数的参数 函数的递归 匿名函数与高阶函数 二分查找示例 一.编码的补充: 在python程序中,首行一般为:#-*- coding:utf-8 -*-,就是告诉p ...
随机推荐
- 查看,检查,修复pg的命令
标签(空格分隔): ceph,ceph运维,pg 如果集群状态是HEALTH_ERR 并且有pgs inconsistent,需要进行如下操作: 1. 通过下面的命令查看哪些pg状态不一致: # ce ...
- linux下go的动态链接库的使用
转自:http://blog.csdn.net/xtxy/article/details/21328143 在使用lua进行服务器端游戏逻辑开发时,发现了LUA的各种不方便的地方,不能编译检查,不能断 ...
- java基础知识(8)---内部类
内部类:如果A类需要直接访问B类中的成员,而B类又需要建立A类的对象.这时,为了方便设计和访问,直接将A类定义在B类中.就可以了.A类就称为内部类.内部类可以直接访问外部类中的成员.而外部类想要访问内 ...
- Python-requests取消SSL验证的警告InsecureRequestWarning解决办法
使用requests模块请求一个证书无效的网站的话会直接报错 可以设置verify参数为False解决这个问题 # -*- coding:utf-8 -*- __author__ = "Mu ...
- C#设计模式(10)——组合模式
一.概念 组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦. 二.组 ...
- shell入门-cut命令
命令:cut 选项:-d:-f 指定第几段由“:(分割符)”分割的段 -c 指定第几个字符 说明:选取命令,选取一段数据中我们想要的,一般是针对每行来分析选取的 [root@wangshaoj ...
- ueditor1.4.3jsp版成功上传图片后却回显不出来与在线管理显示不出图片的解决方案
这是因为路径问题,可以在jsp/config.json这个文件去改路径 通过“imageUrlPrefix”与“imagePathFormat”这两个属性去拼凑路径. “imageUrlPrefix” ...
- Hive与Hbase结合使用
hive的启动需要使用到zookeeper, 所以, 要么自己搭建zookeeper, 要么跟其它东西一起使用, 我这里做的是跟hbase一起使用的zookeeper, 因为hbase自带zookee ...
- Leetcode:1. Two Sum
public class TwoSum1 { public static void main(String[] args) { int[] nums = new int[]{2, 7, 11, 15} ...
- Linux awk指令详解
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...