第二模块:函数编程笔记(一)


三元运算

open()文件操作方法
open('文件路径', '模式', encoding="字符编码")
二进制模式
b 二进制模式

智能检测
pip3 install chardet
import chardet
chardet.detect()

写模式操作文件
w 写模式

追加模式操作文件

读写混合模式
r+ 优先以
w+

tell()
返回文件的当前位置,即文件指针当前位置。

seek()
移动文件读取指针到指定位置

seek() 方法语法如下:
fileObject.seek(offset[, whence])

参数
offset -- 开始的偏移量,也就是代表需要移动偏移的字节数
whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;
0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

flush()
是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。

close()
用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。 close() 方法允许调用多次。
当 file 对象,被引用到操作另外一个文件时,Python 会自动关闭之前的 file 对象。 使用 close() 方法关闭文件是一个好的习惯。

fileno()
方法返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作。

isatty()
方法检测文件是否连接到一个终端设备,如果是返回 True,否则返回 False。

next()
方法在文件使用迭代器时会使用到,在循环中,next()方法会在每次循环中调用,该方法返回文件的下一行,
如果到达结尾(EOF),则触发 StopIteration。

read()
方法用于从文件读取指定的字节数,如果未给定或为负则读取所有。

readline()
方法用于从文件读取整行,包括 " " 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 " " 字符。

readlines()
方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。
如果碰到结束符 EOF 则返回空字符串。

truncate()
方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。
如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。

语法
truncate() 方法语法如下:
fileObject.truncate( [ size ])

参数
size -- 可选,如果存在则文件截断为 size 字节。

实例
# 打开文件
fo = open("runoob.txt", "r+")
print "文件名为: ", fo.name

line = fo.readline()
print "读取第一行: %s" % (line)

# 截断剩下的字符串
fo.truncate()

# 尝试再次读取数据
line = fo.readline()
print "读取数据: %s" % (line)

# 关闭文件
fo.close()

以上实例输出结果为:
文件名为: runoob.txt
读取第一行: 1:www.runoob.com

读取数据:

write()
方法用于向文件中写入指定字符串。
在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的。

writelines()
方法用于向文件中写入一序列的字符串。
这一序列字符串可以是由迭代对象产生的,如一个字符串列表。
换行需要制定换行符 。


函数
定义
函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。

特性
1. 减少重复代码
2. 使程序变得易维护
3. 使程序变的可扩展

函数-默认参数
def parameter(name,age,city='beijing')
print(name,age,city)

函数-关键参数
def stu_register(name, age, course='PY', country='CN'):
print(name, age, course, country)

#调用可以这么写
stu_register("完善跑", course='PY, age=22)

函数-非固定参数
def send_alert(msg, *user, age):
for u in users:
print("报警发送给",u)

#调用可以这么写
send_alert("alex","rain","eric",age=22)

函数-返回值
return 0

函数-局部变量

函数-嵌套函数

函数-作用域
定义完成后,作用域已经生成,作用域链向上查找

函数-匿名函数
lambda x,y:x*y #声明一个匿名函数

函数-高阶函数
变量可以

函数-递归
特性

内置方法
abs()


min()
最小值

all()


bool()
判断true或false

all()

dir()

hex()
16进制

next()

slice()

sorted()
排序方法

ascii()
转换unicode

enumerate()
枚举

any()

divmod()

id()

object()

input()

oct()

staticmethod()

bin()

eval()
将字符串执行代码

exec()
将一段字符串执行代码

int()

open()

str()

isinstance()

ord()

sum()

filter()

print()

tuple()

callable()

locals()

globals()

repr()
展现形式是字符串

set()

荒野生存 电影
百年孤独 书籍

函数 - 名称空间

函数 - 装饰器


闭包

装饰器

生成器
python2
range = list
xrange = 生成器

python3
range = 生成器
xrange = 没有

裴波那契
def fib(max):
n, a, b = 0, 0, 1
while n < max:
print(b)
a, b = b, a + b
n = n + 1

return 'done'


生成器的创建方式
1. 列表 生成式
2. 函数

yield

next() 唤醒冻结的函数执行过程,继续执行,直到遇到下一个yield

函数有了yield之后

send()
1. 唤醒并继续执行
2. 发送一个信息到生成器内部

迭代器
可以理解 迭代 = 循环
迭代器 = 生成器
from collections import Iterable 判断是否可迭代对象

生成器都是Iterator对象,虽然
凡是可作用于 for 循环的对象都是Iterable类型;
凡是可作用于 next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
集合数据类型如list、 dict、 str 等是 Iterable 但不是 Iterator, 不过可以通过iter()函数获得一个Iterator对象

原文地址:https://www.cnblogs.com/changha0/p/7995585.html