Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数

文件操作(续)

获得文件句柄位置,f.tell(),从0开始,按字符数计数

f.read(5),读取5个字符

返回文件句柄到某位置,f.seek(0)

文件在编辑过程中改变编码,f.detech()

获取文件编码,f.encoding()

获取文件在内存中的编号,f.fileno()

获取文件终端类型(tty、打印机等),f.isatty()

获取文件名,f.name()

判断文件句柄是否可移动(tty等不可移动),f.seekable()

判断文件是否可读,f.readable()

判断文件是否可写,f.writeable()

强制刷新(写文件到硬盘),f.flush()

演示flush方法:

import sys,time

for I in range(10):

sys.stdout.write(“#”)

sys.stdout.flush()

time.sleep(0.1)

清空文件内容,r,w模式不能使用?f.trancate(),无内容全清空,否则从头开始指定字符数后截断

r+,读写模式,打开文件读,追加内容

w+,写读模式,创建文件写,只能追加写,用处不大

a+,追加读

rb,二进制文件读,用于网络传输,二进制文件使用,在网络传输时必须使用二进制文件

wb,二进制文件写,写二进制文件,str.encode(“utf-8”)

U,rU,r+U,将\r\n转换为\n

文件处理时,修改源文件会覆盖修改位置以后的内容,修改方法:

  1. 加载到内存处理
  2. 将文件修改放入新文件

文件打开,操作完毕后自动关闭,with open(file, mode, encode) as f_obj

在代码中,\表示换行,建议一行不超过80字符,使用\换行

字符编码与解码

首先要知道字符使用的字符集,使用decode解码,然后用目标字符集进行编码,使用encode,这样就能正常显示在目标字符集的操作系统上

python3中默认采用Unicode编码(与py文件编码是两回事),python2默认采用ASCII编码,Linux采用Unicode编码,Windows才GBK编码

获取python默认编码,sys.getdefaultcoding()

s=u”你好”,u表示采用Unicode编码,s.decode(“utf-8”)会出错

python2中GB2312转换为utf-8如何做?

字符集转换时,要先转码为Unicode,在编码为目标字符集

函数

关键字,def

过程,def,无返回值,隐式返回None

import time

time_format = “%Y-%m-%d %x”

time_current = time.strftim(time_format)

def test1()

pass

无返回值,None;1个返回值,object;多个返回值,元组

调用方式:

关键字调用,test(x,y),test(y=1, x=2),显式改变调用顺序

位置调用,要与形参一一对应

混合调用,按位置调用方式,关键字调用不能写在位置参数前面

test(x,y,z), test(2,z=3,y=6)

给形参赋默认值,使用默认参数值

场景:安装程序时的默认设置

实参不固定的情况,采用参数组

def test(*args),多个实参放入元组

传值,test(1,2,3,4,5),test(*[1,2,3,4,5])

可以与固定参数结合,test(x,*args)

字典形参,def test(**kwargs)

传值,test(name=”alex”,age=8,sex=”M”)

传字典,test(**{“name”:”alex”,”age”:8,”sex”:”M”})

可以与位置参数、默认参数、参数组结合使用

结合时的顺序:位置参数,默认参数,参数组,字典参数

作用域与声明顺序

函数调用必须在函数声明的后边,函数之间的声明顺序没有要求。

局部变量只在函数(过程)内部生效,函数(过程)是这个变量的作用域(起作用的范围)

全局变量应在顶层定义

可以在函数(过程)内部声明、修改全局变量,使用global关键字声明变量,但不要使用这种方法修改全局变量,因为一个函数可能被系统的各部分调用,这将导致全局变量的值无法确定。如果想修改全局变量,可以在函数中返回修改的值。

对象可以在函数(过程)中被修改,如果不想具有这样的效果,在函数中应使用克隆后的对象。

递归

一个函数在内部调用自身

特性:

必须有一个明确的结束条件,没有结束条件会导致超过最大递归层数(英文)错误,最大999层

每进入更深一层,问题规模应比上次有所减少

效率不高,函数是采用栈调用的,可能导致栈溢出

python中,除法默认就可以是小数的结果,如果想取整,使用诸如int(1/2)的方式截断(//可以吗?)

递归加断点调试

函数式编程

是一种数学计算,输入确定,输出就确定,没有变量,不存在逻辑判断(这样才能确定输出),python部分支持。

语言:list,haskell,erlang

高阶函数

一个函数接收另一个函数作为参数,这种函数称为高阶函数

时间: 2024-10-11 12:32:05

Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数的相关文章

Python学习之路:函数式编程介绍&高阶函数

函数式编程:一种抽象程度很高的范式,重要特点:输入是确定的,输出就是确定的: Python对函数式编程,部分支持: 高阶函数: def add(x,y,f):#函数本身传给函数,就是高阶函数 return f(x)+f(y) res = add(3,-6,abs) print(res)

python函数式编程之高阶函数学习

基本概念 函数式编程,是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量.因此,任意一个函数,只要输入确定,输出就确定的这种函数我们称之为纯函数,我们称这种函数没有副作用.而允许使用白变量的程序设计语言,由于函数内部的变量状态是不确定的,同样的输入可能有不同的输出,我们称这种函数为有副作用的. 函数式编程的一个特点就是,允许把函数本身作为参数传递给另一个函数,还允许返回一个函数! Python对函数式编程提供部分支持.由于Python允许使用变量,因此,Python不是纯函数式

python 函数式编程:高阶函数,map/reduce

1 #函数式编程 2 #函数式编程一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数 3 #(一)高阶函数 4 5 f=abs 6 f 7 print(f(-20)) 8 #结果 20 9 #函数可以赋值给一个变量,即:变量可以指向函数 10 #那么函数名是什么?函数名其实就是指向函数的变量! 11 12 #下面的代码,执行后,abs已经不指向求绝对值函数而是一个整数10了. 13 #后面的abs(-10)将报错,无法执行,必须重启python才可以. 14 #abs=10

Python基础笔记:函数式编程:高阶函数、返回函数、匿名函数、装饰器、偏函数

高阶函数 高阶函数:一个函数可以接收另一个函数作为参数 或 一个函数可以返回一个函数作为返回值,这种函数称之为高阶函数. #函数 add 接收 f 函数作为参数 >>> def add(x,y,f): ... return f(x)+f(y) ... >>> add(-5,6,abs) 11 可以把匿名函数作为返回值返回 #把匿名函数作为返回值返回 def build(x, y): return lambda: x * x + y * y 匿名函数 关键字 lambda

python学习笔记八——正则表达式

1.元字符 []-常用来指定一个字符集:[abc];[a-z] -元字符在字符集中不起作用:[akm$] -补集匹配不在区间范围内的字符:[^5] ^-匹配行首 $-匹配行尾 \-后可加不同字符以表示不同意义,也可用于取消所有元字符 \d 匹配任何十进制数,相当于[0-9] \D 匹配任何非数字字符,相当于[^0-9] \s 匹配任何空白字符,相当于[\t\n\r\f\v] \S 匹配任何非空白字符 \w 匹配任何字母数字字符 \W 匹配任何非字母数字字符 *-匹配前一个字符零次或多次 +-至少

python学习笔记(一)续

1.在交互式解释器中,给变量赋值(字符串,数值等等)并通过输入变量名显示它们的值.再用 print 语句做同样的事.区别在于:变量赋值是数值时没有区别:当变量赋值是字符串时,通过变量名显示它们的值的形式是将字符串以单引号括起来,而用print语句则是直接显示字符串. 在python中格式化输出字符串使用的是%运算符,通用的形式为:格式标记字符串 % 要输出的值组:左边部分的最简单形式为:%cdoe,右边的'值组'如果有两个及以上的值则需要用小括号括起来,中间用短号隔开.带百分号格式化的 Pyth

python学习笔记3:集合,文件操作,函数

一.集合 1. >>> s=set([1,2,3,4,5,6,6,6,])>>> s{1, 2, 3, 4, 5, 6} 集合可以理解为有键没有值的字典,键之间去重,无序. 2.集合操作: >>> s1={1,2,3,4,5,6,7}>>> s2={6,7,8,9,10,11}>>> s1&s2{6, 7}//交集>>> s1|s2{1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Python学习笔记(二十三)文件读写

摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431917715991ef1ebc19d15a4afdace1169a464eecc2000 读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求

python学习笔记(八)-模块

大型python程序以模块和包的形式组织.python标准库中包含大量的模块.一个python文件就是一个模块.1.标准模块 python自带的,不需要你安装的2.第三方模块 需要安装,别人提供的. pip install xxx 自动化安装的 手动安装 首先下载安装包 解压 在命令行里面进入到这个解压之后的目录 执行python setup.py install3.自己写的 自己写的python文件import xx 导入一个文件 ,导入文件的实质是什么,把这个python运行一次import