LuffyX学习笔记2

一、文件操作

1.open()方法

例子:
open(test.txt, mode=‘r’, encoding=‘utf-8’)

完整语法为
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

  • file: 必需,文件路径(相对或者绝对路径)。
  • mode: 可选,文件打开模式
  • buffering: 设置缓冲
  • encoding: 一般使用utf-8
  • errors: 报错级别
  • newline: 区分换行符
  • closefd: 传入的file参数类型
  • opener:

其中,mode参数有:

  • r:以只读方式打开文件。
    文件的指针将会放在文件的开头。这是默认模式。
  • rb:以二进制格式打开一个文件用于只读。
    文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
  • r+:打开一个文件用于读写。(非常常用,可用于修改文件)
    文件指针将会放在文件的开头。
  • rb+:以二进制格式打开一个文件用于读写。
    文件指针将会放在文件的开头。一般用于非文本文件如图片等。
  • w:打开一个文件只用于写入
    如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
  • w+:打开一个文件用于写读。(没什么实际应用场景,常用的还是’r+'模式 )
    如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
  • a:打开一个文件用于追加。
    如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

2.file 对象

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数

1 file.close()
关闭文件。关闭后文件不能再进行读写操作。

2 file.flush()
保存文件。刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

3 file.fileno()
返回文件句柄。返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。

4 file.isatty()
如果文件连接到一个终端设备返回 True,否则返回 False。

5 file.next()
返回文件下一行。

6 file.read([size]) (指定的是字符大小)
读取文件。从文件读取指定的字符数,如果未给定或为负则读取所有。

7 file.readable()
判断是否可读。‘w’模式下也不可读

8 file.readline([size])
只读一行,遇到\r或\n为止。读取整行,包括 “\n” 字符。

9 file.readlines([sizeint])
读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。

10 file.seek(offset[, whence])(指定的是字节大小)
移动光标。设置文件当前位置

11 file.tell()
返回至光标位置。返回文件当前位置。

12 file.truncate([size])
按指定长度截断文件。从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 Widnows 系统下的换行代表2个字符大小。

13 file.write(str)
将字符串写入文件,返回的是写入的字符长度。

14 file.writable()
判断是否可写。

15 file.writelines(sequence)
向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

二、函数

1.定义

def 函数名(参数列表):
	函数体	

return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

2.参数

以下是调用函数时可使用的正式参数类型:

  • 必需参数 (调用时括号里按顺序填)
    必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
  • 关键字参数 (调用时括号里用‘=’赋值)
    使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
  • 默认参数(函数内部已经赋值,如果外部不赋值,则调用函数内部的值)
    调用函数时,如果没有传递参数,则会使用默认参数。
  • 不定长参数(*arg,放在最后)
    你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数
    加了一个星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
    加了两个星号 ** 的参数会以字典(dict)的形式导入。

3.匿名函数

  • lambda 只是一个表达式,函数体比 def 简单很多。

  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

  • lambda函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

     a = lambda x:x+1
     print (a(1))
    

4.变量作用域

Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python的作用域一共有4种,分别是:
L (Local) 局部作用域
E (Enclosing) 闭包函数外的函数中
G (Global) 全局作用域
B (Built-in) 内置作用域(内置函数所在模块的范围)
以 L –> E –> G –>B 的规则查找

global 和 nonlocal关键字

当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。
如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字

三、迭代器与生成器

迭代:理解为迭代一次就是循环一次

  • 可以用于for循环的有:
    一类是集合数据类型,list、tuple、dict、set、str
    一类是generator,包括生成器和带yield的generator function
    这些对象统称为可迭代对象:Iterable
    可以用isinstance()判断一个对象是否为可迭代对象

  • 而生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值
    可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator

  • 可以通过iter() 函数将list、dict、str等可迭代对象转化为迭代器

  • python里的for循环本质上就是通过不断调用next()函数实现的

  • 在python2里range = list
    在python3里range = 生成器

  • yield VS return
    return 返回并终止function
    yield 返回数据,并冻结当前的执行过程
    next 唤醒冻结的函数执行过程,继续执行,直到遇到下一个yield

  • 函数有了yield之后,函数名加()就变成了一个生成器,就不算一个函数了

  • send方法可以给yield传值

四、装饰器

	def wapper(func):
	    def boy(x,y):
	        print (x-y)
	        func(x,y) 		#调用老foo
	    return boy
	
	@wapper          #foo=wapper(foo)
	def foo(x,y):
	    print (x+y)
	
	foo(2,1) 			#调用新foo

五、模块导入

六、常用模块

1.os模块

2.json模块

3.logging模块

4.re正则

七、开发目录规范

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值