文件操作的复习
读:read:一次性的读 、 readlines:一次性的读 、readline:一行一行的读 、缺点:不知道在那结束
视频、图片用rb 属于bytes类型,是按照字节读 for循环(最好的)
写:write
光标:就是文件指针 seek:指定光标移动到某个位置 tell:获取光标当前的位置 truncate:截取文件
关闭文件:close
修改文件:文件是不能修改的
删除文件是:os.remove()
重命名文件:os.rename()
函数
def:定义函数的关键字 格式:def 变量名():
定义了之后,可以在任何需要它的地方调用
#函数定义 def mylen(): """计算s1的长度""" s1 = "hello world" length = 0 for i in s1: length = length+1 print(length) #函数调用 mylen()
函数的返回值
return是返回值的关键字
return 是一个关键字,在pycharm里,你会看到它变成蓝色了。你必须一字不差的把这个单词给背下来。
这个词翻译过来就是“返回”,所以我们管写在return后面的值叫“返回值”
返回值有这几种情况:分别是没有返回值、返回一个值、返回多个值
1,没有返回值(默认返回None)
不写return的情况下,就会默认返回一个None
#函数定义 def mylen(): """计算s1的长度""" s1 = "hello world" length = 0 for i in s1: length = length+1 print(length) #函数调用 str_len = mylen() #因为没有返回值,此时的str_len为None print(‘str_len : %s‘%str_len)
只写return,一旦遇到了return,就结束整个函数
def ret_demo(): print(111) return print(222) ret = ret_demo() print(ret)
return None:和上面的两种情况一样,我们一般不这样写。
def ret_demo(): print(111) return None print(222) ret = ret_demo() print(ret)
2,返回一个值
1)return和返回值之间要有空格,可以返回任意数据类型的值。
2)只要返回就可以接收到。
3)如果在一个程序中,有多个return只读到第一个return
#函数定义 def mylen(): """计算s1的长度""" s1 = "hello world" length = 0 for i in s1: length = length+1 return length #函数调用 str_len = mylen() print(‘str_len : %s‘%str_len)
3,返回多个值
1)多个返回值用多个变量接收,有多少个返回值就用多少个变量接收
def ret_demo2(): return 1,[‘a‘,‘b‘],3,4 #返回多个值,用一个变量接收 ret2 = ret_demo2() print(ret2) #返回多个值,用多个变量接收 a,b,c,d = ret_demo2() print(a,b,c,d) #用多个值接收返回值:返回几个值,就用几个变量接收 a,b,c,d = ret_demo2() print(a,b,c,d)
2)用一个变量接收的是一个元祖
函数的参数
1,没有参数
定义函数和调用函数时括号里面都不写内容
2,有一个参数
传什么就是什么
3,有多个参数
按照位置参数
站在实参的角度上:
按照位置传参
def mymax(x,y): #此时x=10,y=20 the_max = x if x > y else y return the_max ma = mymax(10,20) print(ma)
按照关键字传参
def mymax(x,y): #此时x = 20,y = 10 print(x,y) the_max = x if x > y else y return the_max ma = mymax(y = 10,x = 20) print(ma)
混着用可以,但是必须线按照位置参数,在按照关键字传参
def mymax(x,y): #此时x = 10,y = 20 print(x,y) the_max = x if x > y else y return the_max ma = mymax(10,y = 20) print(ma)
不能给多个变量传多个值
站在形参的角度上:
位置参数:必须传且有几个参数就传几个值
默认参数:可以不传的参数,如果不传就用默认的参数,如果传了就用传的
只有调用函数的时候
按照位置传:直接写参数的值
按照关键字:关键字 =值
定义函数的时候
位置参数:直接定义参数
默认参数:关键字参数:参数名 = “默认的值”
陷阱:默认参数是一个可变的数据类型
def defult_param(a,l = []): l.append(a) print(l) defult_param(‘alex‘) defult_param(‘egon‘)
动态参数:可以接收任意多个参数,参数前面加*号,习惯参数名args
def mysum(*args): the_sum = 0 for i in args: the_sum+=i return the_sum the_sum = mysum(1,2,3,4) print(the_sum)
**kwargs 关键字传参的值,组成一个字典
*args 接收按照位置传参的值,组成一个元祖
args 必须在kwargs之前
顺序:位置参数,*args,默认参数,**kwargs
动态参数的另一种传参方式:
站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散
站在形参的角度上,给变量加上*,就是组合所有传来的值