目录
函数的多返回值&文件操作
函数的多返回值
多返回值返回方式
函数的传参方式(以不同的使用方式分类)
位置参数
关键字参数
缺省参数
不定长参数
匿名函数(lambda)
函数作为参数
文件操作
编辑文件的编码
编辑文件的打开&读取
编辑文件的写入
编辑文件的关闭
写在最后
返回误区
#函数的多返回值
#返回值误区 实例如下:
def text_func():#定义函数
return 1
return 2
text_result = text_func()#引用函数
print(text_result)#输出
#输出结果:1
#return函数在给函数返回一个结果的同时会退出当前函数
#故函数中第一个return下的任何函数都不属于当前函数
#故不可以通过在同一函数中描写多个rerun句式来达到同时返回多个返回值的目的
#实现同时返回多个返回值 实例如下:
def text_func_1():#定义函数
return 1,"fortune"
text_result_1 = text_func_1()#引用函数(方式一)
print(text_result_1)#输出
result1,result2 = text_func_1()#引用函数(方式二)
print(result1,result2)#输出
# 输出结果:(1,2)
# 输出结果:1 2
# 按照返回值的顺序,写对应顺序的多个变量接受即可
# 变量之间用逗号隔开,支持不同类型的数据拼接return
# 位置参数
def text_fun_loc(loc_1,loc_2,loc_3): # 函数定义(位置传参) 定义3个形参
print(f"位置参数举例:1:{loc_1} 2:{loc_2} 3:{loc_3}") #输出
text_fun_loc_result = text_fun_loc(0.5,"fortune",1>2) # 传入符合定义数量(3)的参数
text_fun_loc_result_1 = text_fun_loc(0.5,"fortune",1>2,'a')# 传入不符合定义数量(4)的参数
# 输出结果:
# Traceback (most recent call last):
# File "C:\Users\86186\Desktop\PCP\text.py", line 35, in
# text_fun_loc_result_1 = text_fun_loc(0.5,"fortune",1>2,'a')# 传入不符合定义数量的参数
# TypeError: text_fun_loc() takes 3 positional arguments but 4 were given
# 以上为传入4个参数的出错结果(非输出结果)
# 以下为传入3个参数的正确结果(非输出结果)
# 位置函数举例:1:0.5 2:fortune 3:False
# 关键字参数
def text_func_key(key1,key2,key3): # 函数定义(关键字传参)定义3个形参
print(f"关键字参数举例:1:{key1} 2:{key2} 3:{key3}") # 输出
text_func_key_result = text_func_key(key1 = 0.5,key2 = "fortune",key3 = 1>2) # 顺序传参
text_func_key_result_1 = text_func_key(key2 = "fortune",key3 = 1>2,key1 = 0.5) # 乱序传参
text_func_key_result_2 = text_func_key(0.5,key2 = "fortune",key3 = 1>2) # 与位置传参混用
# 输出结果:
# 关键字参数举例:1:0.5 2:fortune 3:False
# 关键字参数举例:1:0.5 2:fortune 3:False
# 关键字参数举例:1:0.5 2:fortune 3:False
# 关键字传参可以乱序传入参数
# 关键字传参与位置传参混用时,位置参数必须位于关键字参数之前且其匹配与形参的顺序
# 缺省参数
def text_func_def(def1,def2,def3 = 1>2): # 函数定义(缺省传参)定义3个形参
print(f"缺省参数举例:1:{def1} 2:{def2} 3:{def3}") # 输出
text_func_def_result = text_func_def(0.5,"fortune") # def3未传入参数 则调用默认参数
text_func_def_result_1 = text_func_def(0.5,"fortune",1<2) # def3传入参数 则覆盖默认参数
# 输出结果:
# 缺省参数举例:1:0.5 2:fortune 3:False
# 缺省参数举例:1:0.5 2:fortune 3:True
# 函数调用时,若未传入参数,则调用默认参数值,否则覆盖默认参数值输出传入参数值
# 位置参数的定义与调用必须出现于缺省参数之前
不定长参数(位置传递)
# 不定长参数
# 位置传递
def text_func_loc_idm(*args): # 函数定义(不定义传参——位置传递)定义任意个形参
print(f"位置传递的内容为:{args} 其类型为:{type(args)}") # 输出
text_func_loc_idm_result = text_func_loc_idm(0.5,"fortune",1>2) # 传入3个参数
text_func_loc_idm_result_1 = text_func_loc_idm(0.5,"fortune") # 传入2个参数
# 输出结果:
# 位置传递的内容为:(0.5, 'fortune', False) 其类型为:
# 位置传递的内容为:(0.5, 'fortune') 其类型为:
# 传进的所有参数都会被args变量收集,其会根据传入的参数的位置合并为一个元组(tuple)
# args是元组(tuple)类型,此及不定长参数的位置传递
不定长参数(关键字传递)
# 不定长参数
# 关键字传递
def text_func_key_idm(**kwargs): # 函数定义(不定义传参——关键字传递)定义任意个形参
print(f"位置传递的内容为:{kwargs} 其类型为:{type(kwargs)}")
text_func_key_idm_result = text_func_key_idm( num = 0.5, name = "fortune", yon = 1>2) # 传入3个参数
text_func_key_idm_result_1 = text_func_key_idm( num = 0.5) # 传入1个参数
# 输出结果:
# 位置传递的内容为:{'num': 0.5, 'name': 'fortune', 'yon': False} 其类型为:
# 位置传递的内容为:{'num': 0.5} 其类型为:
# 参数是“键 = 值”的形式下,所有键值对都会被kwargs接受,同时根据“键 = 值”组成字典
#匿名函数(lambda):
def text_func_lambda(text_lambda): # 定义主函数体
text_func_lambda_result = text_lambda(1,2)
print(text_func_lambda_result) # 输出
text_func_lambda(lambda x,y : x+y) # 定义lambda函数并将其传入
# 输出结果:
# 3
# 语法:lambda 传参 :函数体(最多一行)
# 文件打开
f = open("C:/Users/86186/Desktop/PCP/ile.txt" , "r" , encoding = "UTF-8")
# read()函数
show_1 = f.read(11) # 指定读取文件中的字节个数 例中为11个
show_2 = f.read()
# 当之前有代码读取文件字节时,再次使用read函数将会承接之前的进度继续读取 否则全部读取
print(f"读取11个字节:{show_1}")
print(f"读取全部字节:{show_2}")
# 输出结果:
# 读取11个字节:hello world
# 读取全部字节:
# my name is fortune
# nice to meet you
# 文件打开
f = open("C:/Users/86186/Desktop/PCP/ile.txt" , "r" , encoding = "UTF-8")
# readline()函数
show_4 = f.readline()
print(f"读取一行字节:{show_4}")
show_5 = f.readline()
print(f"读取第二行字节:{show_5}")
# 输出结果:
# 读取一行字节:hello world
#
# 读取第二行字节:my name is fortune
# readline函数作用为读取文件中的一行字节(内容)
# 文件打开
f = open("C:/Users/86186/Desktop/PCP/ile.txt" , "r" , encoding = "UTF-8")
# readlines()函数
show_3 = f.readlines()
print(f" readlines函数下其输出内容:\n {show_3} \n 其数据类型:{type(show_3)}")
# 输出结果:
# readlines函数下其输出内容:
# ['hello world\n', 'my name is fortune\n', 'nice to meet you']
# 其数据类型:
# readlines 函数会将文件的全部行封装到列表中
# 文件打开
f = open("C:/Users/86186/Desktop/PCP/ile.txt" , "w" , encoding = "UTF-8") # 可写模式
f = open("C:/Users/86186/Desktop/PCP/ile.txt" , "a" , encoding = "UTF-8") # 追加模式
# 文件的写入
# write()函数
f.write("text_")
f.flush()
# 直接调用write函数,内容并非直接写入文件,而是会暂存在程序的内存中,即缓冲区
# 当调用flush函数时,内容会被写入文件,其目的在于避免频繁的操作磁盘以导致效率下降
# 文件打开
f = open("C:/Users/86186/Desktop/PCP/ile.txt" , "r" , encoding = "UTF-8")
# 文件的关闭
f.close()
# 如果不调用close,同时程序没有停止运行,则此文件将会一直被Python程序占用
# with open语法
# with open("C:/Users/86186/Desktop/PCP/ile.txt" , "r" , encoding = "UTF-8") as f:
# f.read()
# 通过with open的语句块对文件进行操作可以在操作完成后自动关闭文件(即close功能)
# 避免遗忘close而导致Python程序一直占用文件的问题
如有错误欢迎私聊或评论区指出
一些浅显的看法和知识点汇总 内容引用有黑马课程中的部分内容
《2022新版黑马程序员python教程,8天python从入门到精通,学python看这套就够了》
函数的多返回值:
https://www.bilibili.com/video/BV1qW4y1a7fU?p=81&vd_source=77f607110a61793619d53eda630e2057
文件编码操作:
https://www.bilibili.com/video/BV1qW4y1a7fU?p=85&vd_source=77f607110a61793619d53eda630e2057