---------------个人学习笔记---------------

----------------本文作者吴疆--------------

------点击此处链接至博客园原文------

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)集合、文件操作、字符转编码、函数、全局/局部变量、递归、函数式编程、高阶函数的更多相关文章

  1. [Python3] 035 函数式编程 高阶函数

    目录 函数式编程 之 高阶函数 1. 引子 2. 系统提供的高阶函数 3. functools 包提供的 reduce 4. 排序 函数式编程 之 高阶函数 把函数作为参数使用的函数,叫高阶函数 1. ...

  2. Python基础-week03 集合 , 文件操作 和 函数详解

    一.集合及其运算 1.集合的概念 集合是一个无序的,不重复的数据组合,它的主要作用如下 *去重,把一个列表变成集合,就自动去重了 *关系测试,测试两组数据之前的交集.并集.差集.子集.父级.对称差集, ...

  3. C# 基础 字符串 集合 文件操作

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. 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 #与函 ...

  5. python3 第二十章 - 函数式编程之Higher-order function(高阶函数)

    什么是高阶函数?把函数作为参数传入或把函数做为结果值返回,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式.函数式编程的特点: 函数本身可以赋值给变量,赋值后变量为函数: 允许将函数本身 ...

  6. Scala 基础(十一):Scala 函数式编程(三)高级(一)偏函数、作为参数的函数、匿名函数、高阶函数

    1 偏函数 1)在对符合某个条件,而不是所有情况进行逻辑操作时,使用偏函数是一个不错的选择 2)将包在大括号内的一组case语句封装为函数,我们称之为偏函数,它只对会作用于指定类型的参数或指定范围值的 ...

  7. python基础之 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  8. Python基础2 列表 元祖 字符串 字典 集合 文件操作 -DAY2

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  9. python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数

    目录: 编码的补充 文件操作 集合 函数的参数 函数的递归 匿名函数与高阶函数 二分查找示例 一.编码的补充: 在python程序中,首行一般为:#-*- coding:utf-8 -*-,就是告诉p ...

随机推荐

  1. 人物-IT-柳传志:柳传志

    ylbtech-人物-IT-柳传志:柳传志 柳传志,英文名:Chuanzhi Liu,男,汉族,中共党员,1944年4月出生于江苏镇江,联想控股股份有限公司董事长,联想集团创始人. 企业家.投资家.全 ...

  2. oracle--循环PL/SQL--demo1---

    --简单的条件判断if–then --编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该员工工资增加10%. create or replace procedure sp_pro6 ...

  3. Quartz.NET+TopSelf 实现定时服务

    转载http://www.cnblogs.com/jys509/p/4628926.html Quartz.NET 入门 2015-07-09 00:59 by jiangys, 67858 阅读,  ...

  4. 洛谷-跑步-NOI导刊2010提高

    新牛到部队, CG 要求它们每天早上搞晨跑,从A农场跑到B农场.从A农场到B农场中有n-2个路口,分别标上号,A农场为1号, B农场为n号,路口分别为 2 ..n -1 号,从A农场到B农场有很多条路 ...

  5. React组件详细介绍及其生命周期函数

    组件的详细说明 通过Reac.createClass({...})创建组件的时候,应该有一个render()方法,也可以在其中添加生命周期函数. render方法 当调用该方法的时候,会检测this. ...

  6. docker里安装ubuntu

    使用 Ubuntu 官方镜像 Ubuntu 相关的镜像有很多,这里使用 -s 10 参数,只搜索那些被收藏 10 次以上的镜像 $ docker search -s 10 ubuntu NAME DE ...

  7. vim加亮和自动缩进

    修改/etc/vimrc 添加 set cindent syntax on

  8. win7 64位安装nokia 920驱动

    折腾了很长时间,终于安装成功,先将一些步骤记下来,此方法适用于哪些网上常规方法无法安装驱动的: 需要注意920不要连到电脑上的USB3.0接口,相关文件下载地址:http://pan.baidu.co ...

  9. The project was not built since its build path is incomplete. Cannot find the class file for java.lang.Object

    The project was not built since its build path is incomplete. Cannot find the class file for java.la ...

  10. OTRS 二次开发笔记

    公司使用otrs系统处理业务工单,各种事件流.因为是开源免费系统,因此需要在上面做一些功能补充或定制的二次开发. otrs是什么? OTRS 是一个功能强大的工单系统.完美适用于服务台(Help De ...