一、文件操作
1)、file 对象使用 open 函数来创建
参数1:文件名,可以是文件的绝对路径
参数2:option ,常用的有:r(读),w(写),a(追加),b(以二进制方式进行操作)
2)、 file 对象常用的函数
①、file.read() 把文件的所有内容读取出来,返回一个字符串
②、file.write(data) 把字符串data写入到文件中,只接受字符串参数
③、file.readline() 每次读取文件一行数据,返回每行的字符串数据
④、file.readlines() 读取文件内容,返回一个list,每一行是一个元素
⑤、file.name 文件名字
⑥、file.fileno() 文件描述符
⑦、file.close() 关闭文件
⑧、file.encoding 文件编码(这个最好每次写上,可以避免版本问题导致的乱码)
⑨、file.closed 返回布尔值,判断文件是否已经关闭
⑩、file.seek(offset, whence) 控制文件光标,文件需要使用b方式打开,offset偏移量正数向后偏移,负数向前偏移,whence(0表示开头,1表示当前位置,2表示结尾)
⑪、file.tell() 返回光标的下标(换行符 等于两个字符)
⑫、file.truncate(size) 只有在写文件才能用,size表示清空到什么地方
3)、示例
①、读取文件内容(读状态下需要文件是存在的,否则报错):
f = open("1.txt", "r", encoding="utf-8")
print(f.read())
f.close()②、写入文件内容(写状态下文件是否存在不重要,存在的话会重写,不存在会创建):
f = open("1.txt", "w", encoding="utf-8")
f.write("nihao woshi jiang")
f.close()③、追加文件内容:
f = open("1.txt", "a", encoding="utf-8")
f.write("nihao I'm jiang What's your name")
f.close()④、全局声明(默认规定用大写,后面如果有多处修改的话可以很快速的解决,建议使用):
ENCODING = "utf-8"
f = open("1.txt", "a", encoding=ENCODING)
f.write("nihao I'm jiang What's your name")
f.close()⑤、打印文件内容及行号(需要使用到enumerate):
ENCODING="utf-8"
f = open("1.txt", "r", encoding=ENCODING)
for i, line in enumerate(f.readlines()):
print(i+1, line)
f.close()⑥、引用with语句来自动调用close()方法(最常用方式),使用codecs模块可以避免编码问题,推荐尽量使用这种:
with codecs.open('/path/to/file', 'r', encoding="utf-8") as f:
print(f.read())
二、函数
1)、函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。也可以自己创建函数,这被叫做用户自定义函数。在写每一个函数的时候尽量不要超过30行代码,精简成每个细小功能,提高易读性!
2)、语法:
函数的声明(形参):
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]
函数的调用(实参):
functionname( arg1, arg2, ... )
3)、示例:
①、阶乘:
def jc(n):
result = 1
if n == 0:
return result
else:
for i in range(1, n + 1):
result *= i
return result
def main():
count = 0
num = input("Pls input the num: ")
for i in range(0, int(num)+1):
count += jc(i)
print("count={0}".format(count))
if __name__ == '__main__':
main()
4)、不定长参数
def fun(a, *args, **kwargs):
pass
*args 代表list
**kwargs 代表dict
当传入的参数如下:
fun(1, 2, 3, 4, 5 ,a=1, b=2)
得到的结果是:
a = 1
args = 2, 3, 4, 5 tuple参数 对应赋值
kwars ={"a": 1, "b": 2} dict参数 对应赋值
5)、匿名函数
5.1、python 使用 lambda 来创建匿名函数。
- lambda只是一个表达式,函数体比def简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
- 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
5.2、语法:
lambda [arg1 [,arg2,.....argn]]:expression
5.3示例:
函数①和函数②是相等的:
函数①:
def add(x, y):
return x+y
函数②:
lambda x, y: x+y