文件的操作模式
"""
1. 如果是t模式,read里面写的数字代表的是读取的字符个数
2. 如果是b模式,read里面写的数字代表的是读取的字节个数
3. 一个字节代表一个英文字符
4. 一个中文字符使用三个字节保存
"""
# with open('a.txt', 'r', encoding='utf8') as f:
# print(f.read(3)) # 你好啊
with open('a.txt', 'rb') as f:
# 你
print(f.read(10).decode('utf8')) # 你好啊
文件内指针的移动
"""
指针一定总共有三种模式:
f.seek(3,0)
f.seek(offset,whence)
whence:
# 0: 默认的模式,该模式代表指针移动的字节数是以文件开头为参照的(支持tb模式)
# 1: 该模式代表指针移动的字节数是以当前所在的位置为参照的(只用于字节模式)
# 2: 该模式代表指针移动的字节数是以文件末尾的位置为参照的(只用于字节模式)
"""
with open('a.txt', 'rb') as f:
# f.seek(3,0)
# print(f.read())
# f.seek(-3,1) # 负数代表的是往相反方向移动
f.seek(-3,2) # 负数代表的是往相反方向移动
print(f.tell()) # 7 查看光标现在移动的位置
print(f.read()) # loworld
# print(f.read()) # 读取内容为空
文件的修改
# 方式1:
# 1.
with open('a.txt', 'r', encoding='utf8') as f:
data = f.read()
res = data.replace('kevin', 'tank')
print(res)
with open('a.txt', 'w', encoding='utf8') as f:
f.write(res)
# 小练习:实现动态查看最新一条日志的效果
import time # tail -f a.txt
with open('access.log', mode='rb') as f:
f.seek(0, 2) # 直接把光标移动到了末尾
while True:
line = f.readline() # 读取一行数据
if len(line) == 0:
# 没有内容
time.sleep(1) # 睡眠0.5秒
else:
print(line.decode('utf-8'), end='')
函数简介
def my_len():
n = 0
for i in l:
n += 1
print(n)
print(my_len()) # None:返回值
"""
1. 我们现在写的代码都不够简洁,说白了就是需要写重复的代码(解决了)
2. 我们现在写的代码兼容性不强(目前解决不了)
函数简介:
函数就类似于是一个工具(功能)
函数就是提前定义好的一个功能,以后想用,就调用函数使用
"""
函数的语法结构
def my_len(a,b):
'''函数注释'''
print(123)
return
"""
1. def 定义函数的关键字(不能省略)
2. my_len
函数名,不能省略,必须写
函数名的命名遵循变量的命名
3. def my_len(参数1,参数2):
参数是可有可无的
参数就是在执行函数的时候要提前满足的条件
4. 函数注释
可有可无,一般情况函数注释是用来介绍函数的功能、参数代表的意思,以及返回值的情况等信息
5. 函数体
函数体也是可有可无的,但是,没有函数体的函数没有意义的,pass
6. 函数的返回值
关键字:return
返回值也是可有可无的,一个函数只能有一个return返回值
"""
函数的定义与调用
#########################################################################
"""
1. 函数必须先定义后调用
2. 函数在定义阶段只检测语法错误,不执行函数体代码
3. 只有在函数调用阶段,才会执行函数体代码
4. 如何调用函数
函数名加括号,如果有参数,在调用的时候也要把参数一块传过去
"""
#########################################################################
函数在定义阶段和调用阶段的底层原理:
1. 在内存空间中申请一块地址,来存储函数体代码
2. 把函数体代码所在的空间地址绑定给函数名
3. 通过调用函数来执行函数体代码
函数的分类
1. 内置函数:python解释器自带的函数,可以直接拿来使用
eg:len、print、之前学的数据类型的内置方法
'''本质上方法也是函数,为什么叫法不一样呢,函数单独使用就叫函数,面向对象,把函数写在面向对象里面就叫方法'''
2. 自定义函数
无参函数
# 没有参数的函数,括号里面没有参数的函数
def index():
pass
有参函数
# 有参数的函数就叫有参函数,括号里面有参的函数
def index(a,b):
print(a+b)
index(1,2)
空函数
# 就是没有函数体的代码,空函数可以帮助我们梳理代码思路
def register():
pass
def login():
pass
def order():
pass
def car_shopping():
pass
def address():
pass
函数的返回值
def index(a, b):
print('helloworld')
# if a > b:
# return '123'
# else:
# return '345'
# return 1, 2, 3, 4 # (1, 2, 3, 4)
c = a+ b
# return [1, 2, 3, 4]
# return c
return {
'username':'kevin',
'age':18
}
# 返回值的关键字是return
res = index(1, 2) #
# res1 = index()
# res1 = index()
# res1 = index()
# res1 = index()
#
# (1,2,3,4) [1, 2, 3, 4]
print(res) # None res叫称之为是函数的返回值
# print(res[1]) # None res叫称之为是函数的返回值
# print(res1) # None res叫称之为是函数的返回值
"""
1. 函数内如果没有return关键字,那么,函数的返回结果就是None
2. 函数内如果只有return关键字,那么,函数的返回结果仍然是None
3. 函数内有了return关键字,return后面写什么东西就返回什么东西,谁调用,返回结果就给谁
4. 函数内遇到return关键字就直接返回结构,或者叫函数终止运行
5. 一个函数内只能有一个return结果
6. return后面也可以返回多个值,如果使用逗号隔开,那就以元组的形式返回,也可以直接返回列表、字典等类型
"""
标签:index,return,函数,res,修改,print,def,指针
From: https://www.cnblogs.com/huangchunfang/p/17560394.html