[toc]

第六天

文件的读取

读写文件有3 个步骤:

f = open("1.txt","r",encoding="utf-8")
print(f.read())
f.close()

文件读取操作方法

  • read( ):表示读取全部内容,返回全部内容
  • readline( ):表示逐行读取,一次返回一行,返回的行数据
  • readlines():用于读取所有行,返回的是列表,列表里的每个元素代表的是一行数据
  • write():写入文件,只接受字符串参数
  • name 文件名
  • encoding 文件编码
  • f.tell() 返回一个整数,表示当前文件指针的位置(就是到文件头的比特数)
  • f.seek(偏移量,起始位置) 用于移动文件读取指针到指定位置。
  • truncate() 用于从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断
  • help(fr.seek) 控制文件光标,文件需要使用b方式打开
  • flush() 刷新,刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件,
  • fileno() 返回一个文件描述符(非负整数的)
  • close() 关闭文件

with open

with open("1.txt","r",encoding="utf-8") as f:
    print(f.read())

函数高级

函数的调用

def disab(a,b):
    print("你传入的参数为{0}和{1}".format(a,b))
    return "result"
c = disab(1,2)
print("返回值为{0}".format(c))

# 执行结果为
D:\pywork\live\venv\Scripts\python.exe D:/pywork/live/文件操作/demon1.py
你传入的参数为1和2
返回值为result

Process finished with exit code 0

函数的参数

  • 必需参数 必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
# 不传参会报错
def dis(str):
    print(str)
    return
dis()

#执行结果
D:\pywork\live\venv\Scripts\python.exe D:/pywork/live/文件操作/demon1.py
Traceback (most recent call last):
  File "D:/pywork/live/文件操作/demon1.py", line 24, in <module>
    dis()
TypeError: dis() missing 1 required positional argument: 'str'

Process finished with exit code 1

  • 默认参数 调用函数时,如果没有传递参数,则会使用默认参数
# 没有传入list,会使用默认的
# 其中str,list 为形参,4为实参
def dis(str,list="name"):
    print(str,list)
    return
dis(4)

#执行结果
D:\pywork\live\venv\Scripts\python.exe D:/pywork/live/文件操作/demon1.py
4 name

Process finished with exit code 0
  • 不定长参数
    你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。
def dis(str,list="name",*some,**lot):
    print(str,list,some)
    for key in lot:
        print(key,lot[key])
    return
dis(4,5,6,7,8,a=1,b=2)

# 执行结果为
D:\pywork\live\venv\Scripts\python.exe D:/pywork/live/文件操作/demon1.py
4 5 (6, 7, 8)
a 1
b 2

Process finished with exit code 0

匿名函数

lambda 只是一个表达式,函数体比 def 简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

x = lambda a,b:a+b
print(x(3,2))

# 执行结果
D:\pywork\live\venv\Scripts\python.exe D:/pywork/live/文件操作/demon1.py
5

Process finished with exit code 0

相当于
def x(a,b):
    y = a + b
    return y
print(x(3,2))
04-05 00:27