文章目录

  • 1. 文件相关函数
  • 2. 函数_函数的参数
    • 2.1 函数
    • 2.2 函数的参数
  • 3. 收集参数
  • 4. 命名关键字_总结
  • 4. 小练习

1. 文件相关函数

# ### 刷新缓冲区
"""
# 刷新缓冲区 flush# 当文件关闭的时候自动刷新缓冲区# 当整个程序运行结束的时候自动刷新缓冲区# 当缓冲区写满了  会自动刷新缓冲区# 手动刷新缓冲区
"""
"""
fp = open("ceshi1.txt",mode="a",encoding="utf-8")
fp.write("abc")# 手动刷新缓冲区,直接把内容写入到文件
fp.flush()while True:passfp.close()
"""
# ### 文件相关的函数
"""fp这个对象本身是迭代器,可以把文件中的内容按照换行一行一行遍历出来"""
"""
fp = open("ceshi1.txt",mode="r",encoding="utf-8")
#readable()     功能: 判断文件对象是否可读
print(fp.readable())
#writable()     功能: 判断文件对象是否可写
print(fp.writable())
# 遍历fp文件对象
for i in fp:print(i)
"""# 1.readline()     功能: 读取一行文件内容
'''
with open("ceshi1.txt",mode="r",encoding="utf-8") as fp:res = fp.readline()print(res)res = fp.readline()print(res)res = fp.readline()print(res)res = fp.readline()print(res)# (1)一次把所有内容都读取出来
with open("ceshi1.txt",mode="r",encoding="utf-8") as fp:# 先读取一行res = fp.readline()# 判断是不是空,不是空在循环while res:print(res)# 在读取一行,放到循环中判断.res = fp.readline()# (2)注意点:readline(读取的字符数)
print("<====================>")
with open("ceshi1.txt",mode="r",encoding="utf-8") as fp:"""读取的字符数量 > 实际当前行字符数量的时候 => 按照当前行读取读取的字符数量 < 实际当前行字符数量的时候 => 按照实际数量来读"""res = fp.readline(300)print(res)
'''
print("<====================>")
# 2.readlines()    功能:将文件中的内容按照换行读取到列表当中
lst_new = []
with open("ceshi1.txt",mode="r+",encoding="utf-8") as fp:lst = fp.readlines()for i in lst:lst_new.append(i.strip())
print(lst_new)# 3.writelines()   功能:将内容是字符串的可迭代性数据写入文件中 参数:内容为字符串类型的可迭代数据lst = ['床前明月光', '疑是地上霜', '举头望明月', '低头想家乡']
with open("ceshi2.txt",mode="w+",encoding="utf-8") as fp:fp.writelines(lst)# ### 实现效果:加入换行效果,并且插入一句话:王文真帅呀 , 插在低头想家乡的前面
lst_new = []
# 先把内容插入到原列表中
lst.insert(-1,"王文真帅呀")
# 循环原列表,把每一个元素拼接\n , 放到新列表
for i in lst:lst_new.append(i + "\n")
print(lst_new)
# 把新列表中的每行内容插入到文件中
with open("ceshi2.txt",mode="w+",encoding="utf-8") as fp:fp.writelines(lst_new)# 注意点,内容必须是字符串,不能是整型
"""
lst = [1,2,3]
with open("ceshi2.txt",mode="w+",encoding="utf-8") as fp:fp.writelines(lst)
"""# 4.truncate()     功能: 把要截取的字符串提取出来,然后清空内容将提取的字符串重新写入文件中 (字节)
with open("ceshi2.txt",mode="r+",encoding="utf-8") as fp:fp.truncate(3)"""
seek(字节)
truncate(字节)
read(字符/字节)
readline(字符/字节)
"""

2. 函数_函数的参数

2.1 函数

# ### 函数
"""
概念:功能 (包裹一部分代码 实现某一个功能 达成某一个目的)
特点:可以反复调用,提高代码的复用性,提高开发效率,便于维护管理
"""
# 1.函数基本格式
"""
# 定义一个函数
def 函数名():code1code # 调用函数
函数名()
"""# 定义函数
def func():print("我是一个函数 ... ")# 调用函数
func()# 2.函数的命名
"""
字母数字下划线,首字符不能为数字
严格区分大小写,且不能使用关键字
函数命名有意义,且不能使用中文哦驼峰命名法:(1) 大驼峰命名法: 每个单词的首字符要大写 (类的命名)mycar => MyCar(2) 小驼峰命名法: 除了第一个单词首字符小写外,剩下单词首字符大写 (函数或者变量)mycar => myCar
_命名法:可以将不同的单词用_拼接在一起mycar => my_carsymmetric_differencesymmetricDifference SymmetricDifference
"""# 函数定义
def cfb_99():for i in range(1,10):for j in range(1,i+1):print("{:d}*{:d}={:2d} ".format(i,j,i*j) ,end="")print()
# 调用函数
for i in range(5):cfb_99()

2.2 函数的参数

# ### 函数的参数
"""
参数: 函数运算时需要的值参数种类:(1)形参: 形式参数,在函数的定义处(2)实参: 实际参数,在函数的调用处形参的种类:1.普通形参(位置形参) 2.默认形参 3普通收集形参 4.命名关键字形参 5.关键字收集形参
实参的种类:1.普通实参 2.关键字实参原则:形参和实参要一一的对应
"""# 1.普通形参(位置形参)
# 定义函数
"""hang,lie普通形参,在函数定义处"""
def small_star(hang,lie):i = 0while i < hang:j = 0while j < lie:print("*",end="")j +=1print()i += 1
# 调用函数
"""10,10普通实参,在函数的调用处"""
small_star(10,10)
small_star(2,3)# 2.默认形参
"""hang,lie默认形参,在函数定义处"""
"""
如果给予实参,那么使用实参
如果没有给予实参,那么使用参数身上的默认值
"""
def small_star(hang=10,lie=10):i = 0while i < hang:j = 0while j < lie:print("*",end="")j +=1print()i += 1small_star(4,8)
small_star(8)
small_star()# 3.普通形参 + 默认形参
"""普通形参必须写在默认形参的前面不能调换位置"""
def small_star(hang,lie=10):i = 0while i < hang:j = 0while j < lie:print("*",end="")j +=1print()i += 1
small_star(5,7)
# small_star(5)
# small_star() error# 4.关键字实参
print("<=============>")
"""
1.如果都是关键字实参,可以任意调整实参的顺序
2.普通实参必须写在关键字实参的前面
"""
def small_star(hang,a,b,c,lie=10):i = 0while i < hang:j = 0while j < lie:print("*",end="")j +=1print()i += 1# hang a ... lie 具体指定参数的值叫做关键字实参,在函数的调用处;
# small_star(hang=3,a=4,b=5,c=6,lie=7)
# small_star(b=5,c=6,lie=7,a=4,hang=3)
small_star(3,4,b=5,c=6,lie=7)
small_star(3,4,b=5,lie=7,c=6)
# small_star(b=5,c=6,lie=7,3,4) error

3. 收集参数

# ### 收集参数
"""
(1) 普通收集形参: 专门用来收集那些多余的没人要的普通实参收集之后,会把多余实参打包成一个元组参数头上1个星星def func(*args):passargs => arguments
"""
def func(a,b,c,*args):print(a,b,c) # 1 2 3print(args)  # (4,5,6)func(1,2,3,4,5,6)# 任意个数值得累加和
def mysum(*args):total = 0for i in args:total += iprint(total)
mysum(1,2,3,4,4,45,10,100)"""
(2) 关键字收集形参:专门用来收集那些多余的没人要的关键字实参收集之后,会把多余关键字实参打包成一个字典参数头上有2个星星def func(**kwargs):passkwargs => keyword arguments
"""def func(a,b,c,**kwargs):print(a,b,c)print(kwargs) # {'f': 100, 'e': 200, 'z': 12}
func(c=1,a=3,b=10,f=100,e=200,z=12)# 拼接任意个数值变成字符串
"""
班长: 赵万里
班花: 马春陪
划水群众: 赵沈阳,李虎凌,刘子涛
"""
def func(**kwargs):strvar1 = ""strvar2 = ""# 定义职位信息dic = {"monitor":"班长","classflower":"班花"}print(kwargs)# 共5次循环for k,v in kwargs.items():if k in dic:# 将2次循环的结果通过+= 拼接在一起strvar1 += dic[k] + ":" + v + "\n"          else:# 将3次循环的结果通过+= 拼接在一起strvar2 += v + " , "print(strvar1.strip())print("划水群众:",strvar2.strip(" , "))"""# print(k,v)k       vmonitor 赵万里classflower 马春陪water1 赵沈阳water2 李虎凌water3 刘子涛{'monitor': '赵万里', 'classflower': '马春陪', 'water1': '赵沈阳', 'water2': '李虎凌', 'water3': '刘子涛'}"""func(monitor="赵万里",classflower="马春陪",water1="赵沈阳",water2="李虎凌",water3="刘子涛")

4. 命名关键字_总结

# ### 命名关键字参数
"""
(1) def func(a,b,*,c,d) 跟在*号后面的c和d是命名关键字参数
(2) def func(*args,e,**kwargs) 加在*args和**kwargs之间的参数都是命名关键字参数命名关键字参数 : 在调用函数时,必须使用关键字实参的形式来进行调用;
"""
# 定义方法一
def func(a,b,*,c,d):print(a,b)print(c,d)# 必须指定关键字实参,才能对命名关键字形参进行赋值
func(1,2,c=3,d=4)# 定义方法二
def func(*args,e,**kwargs):print(args)   # (1, 2, 3, 4)print(e)      # 3print(kwargs) # {'a': 1, 'b': 2}
func(1,2,3,4,a=1,b=2,e=3)# ### 星号的使用
"""
* 和 ** 如果在函数的定义处使用:*  把多余的普通实参打包成元组** 把多余的关键字实参打包成字典* 和 ** 如果在函数的调用处使用:*  把元组或者列表进行解包** 把字典进行解包
"""def func(a,b,*,c,d):print(a,b)print(c,d)tup = (1,2)
# 函数的调用处 *号用法
func(*tup,c=3,d=4) # func(1,2,c=3,d=4)# 函数的调用处 **号用法
dic={"c":3,"d":4}
func(1,2,**dic)    # func(1,2,c=3,d=4)# 综合写法
# 函数的调用处
tup = (1,2)
dic={"c":3,"d":4}
func(*tup,**dic)# 定义成如下形式,可以收集所有的实参
def func(*args,**kwargs):pass# 总结: 当所有的形参都放在一起的时候,顺序原则:
"""普通形参 -> 默认形参 -> 普通收集形参 -> 命名关键字形参 -> 关键字收集形参
"""def f1(a, b, c=0, *args, **kw):print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)def f2(a, b, c=0, *, d, **kw):print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
# 以上两个函数 打印结果
#(一)
f1(1, 2) # a =1 b=2 c=0 args=() kw={}
f1(1, 2, c=3) # a=1,b=2,c=3,args=() kw={}
f1(1, 2, 3, 'a', 'b') #a=1 b=2 c=3 args=(a,b) kw={}
f1(1, 2, 3, 'a', 'b', x=99) # a=1 b=2 c=3 args=(a,b) kw={x:99}
f2(1, 2, d=99, ext=None)#a=1 b=2 c=0 d=99 kw={ext:None}#(二)
args = (1, 2, 3, 4)
kw = {'d': 99, 'x': '#'}
# f1(1,2,3,4,d=99,x=#)
f1(*args, **kw) # a=1 b=2 c=3 args=(4,) kw={d:99,x:#}#(三)
myargs = (1, 2, 3)
mykw = {'d': 88, 'x': '#'}
# f2(1,2,3,d=88,x=#)
f2(*myargs, **mykw) # a=1,b=2,c=3 d=88 kw={x:#}#(四)
def f1(a, b, c=0, *args,d,**kw):print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)print(d)f1(1,2,3, 'a', 'b',d=67, x=99,y=77) # a=1 b=2 c=3 args=(a,b)  kw={x:99,y:77}# d=67

小提示:

出现网络延迟堵塞的时候,自己用flush刷一下
strvar = alex Nb
# 注意:这里虽然说把首字母大写了,但是会把后面的大写字母变成小写
print(srvar.capitalize) #Alex nb

4. 小练习

练习问题:

#1.有如下文件,a1.txt,里面的内容为:键盘敲烂,月薪过万.键盘落灰,狗屎一堆.分别完成以下的功能:
a:将原文件全部读出来并打印。
b:在原文件后面追加一行内容:信不信由你,反正我信了。
c:将原文件全部读出来,并在后面添加一行内容:信不信由你,反正我信了。
d:将原文件全部清空,换成下面的内容:每天坚持一点,每天努力一点,每天多思考一点,慢慢你会发现,你的进步越来越大。e:将原文件内容全部读取出来,并在'键盘落灰'这一行的前面加一行,'年薪百万'然后将更改之后的新内容,写入到一个新文件:a1.txt。#2.有如下文件,t1.txt,里面的内容为:葫芦娃,葫芦娃,一根藤上七个瓜风吹雨打,都不怕,啦啦啦啦。上面的内容你肯定是心里默唱出来的,对不对分别完成下面的功能:
a:以r+的模式打开原文件,判断原文件是否可读,是否可写。
b:以r的模式打开原文件,利用for循环遍历文件对象。
c:以r的模式打开原文件,以readlines()方法读取出来,并循环遍历
d:以r模式读取‘葫芦娃,’前四个字符。
e:以r模式读取第一行内容,并去除此行前后的空格,制表符,换行符。
f:以r模式打开文件,从‘风吹雨打.....’开始读取,一直读到最后。
g:以a+模式打开文件,先追加一行:‘老男孩教育’然后在全部读取出来。
h:截取原文件,截取内容:‘葫芦娃,葫芦娃,’#3.文件a.txt内容:每一行内容分别为商品名字,价钱,个数。apple 10 3tesla 100000 1mac 3000 2lenovo 30000 3chicken 10 3
变成如下数据格式,并计算出总价格
[{'name':'apple','price':10,'amount':3},{'name':'tesla','price':1000000,'amount':1}
] #4.定义函数:打印用户传入的容器类型数据长度
#5.定义函数:参数为容器类型数据,打印所有奇数位索引对应的元素
#6.定义函数:,接收一个参数(可迭代性数据),用_让元素相连成字符串,打印出来
#7.输入字符串 "k:1|k1:2|k2:3|k3:4" 处理成字典 {'k':1,'k1':2....} 打印出来
#8.输入列表li= [11,22,33,44,55,66,77,88,99,90]# 将大于 66 的值保存至字典的k1键中,# 将小于 66 的值保存至字典的k2键中。# 打印字典 {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}

练习答案:

# a
with open("a1.txt",mode="r",encoding="utf-8") as fp:print(fp.read())
# b
with open("a1.txt",mode="a+",encoding="utf-8") as fp:fp.write("\n\t信不信由你,反正我信了")# c
with open("a1.txt",mode="a+",encoding="utf-8") as fp:print(fp.read())fp.write("\n\t信不信由你,反正我信了")# d
strvar ="""    每天坚持一点,每天努力一点,每天多思考一点,慢慢你会发现,你的进步越来越大。
"""
with open("a1.txt",mode="w+",encoding="utf-8") as fp:fp.write(strvar)# e
with open("a2.txt",mode="r+",encoding="utf-8") as fp:lst = fp.readlines()    print(lst) # ['\t键盘敲烂,\n', '\t月薪过万.\n', '\t键盘落灰,\n', '\t狗屎一堆.\n']lst.insert(-2,"\t年薪百万\n")with open("a3.txt",mode="w+",encoding="utf-8") as fp:fp.writelines(lst)# #####################################
# a
with open("a4.txt",mode="r+",encoding="utf-8") as fp:print(fp.readable())print(fp.writable())# b
with open("a4.txt",mode="r",encoding="utf-8") as fp:for i in fp:print(i)# c
with open("a4.txt",mode="r",encoding="utf-8") as fp:lst = fp.readlines()for i in lst:print(i)# d
with open("a4.txt",mode="r",encoding="utf-8") as fp:print(fp.read(4))# e
with open("a4.txt",mode="r",encoding="utf-8") as fp:print(fp.readline().strip())# f
print("<====>")
with open("a4.txt",mode="r",encoding="utf-8") as fp:lst = fp.readlines()for i in lst[-2:]:print(i)# g
with open("a4.txt",mode="a+",encoding="utf-8") as fp:fp.write("\n老男孩教育")fp.seek(0)print(fp.read())# h
with open("a4.txt",mode="r+",encoding="utf-8") as fp:fp.truncate(24)# #####################################
"""
[
'\tapple 10 3\n',
'\ttesla 100000 1\n',
'\tmac 3000 2\n',
'\tlenovo 30000 3\n',
'\tchicken 10 3'
]
"""
print("><======================?")
lst_new = []
total = 0
with open("a5.txt",mode="r+",encoding="utf-8") as fp:lst = fp.readlines()# print(lst)for i in lst:# 定义空字典dic = {}# 取出字符串两边的空白lst = i.strip().split()print(lst)# 拼装字典dic["name"] = lst[0]dic["price"] = int(lst[1])dic["amount"] = int(lst[2])# 累计当前商品的价格总数res = dic["price"] * dic["amount"]# 累计所有的商品价格总数total += res# 把当前商品的信息字典追加到列表中lst_new.append(dic)print(total)
print(lst_new)
"""
[
{'name': 'apple', 'price': 10, 'amount': 3},
{'name': 'tesla', 'price': 100000, 'amount': 1},
{'name': 'mac', 'price': 3000, 'amount': 2},
{'name': 'lenovo', 'price': 30000, 'amount': 3},
{'name': 'chicken', 'price': 10, 'amount': 3}
]
"""# 4.
def func(container):return len(container)
res = func((1,2,3,4))
print(res)# 5.
def func(container):# 方法一# for i in range(1,len(container),2):# print(container[i])# 方法二for i in container[1::2]:print(i)func([11,22,33,44,55,666])# 6.
def func(container):"""# 方法一strvar = ""for i in container:strvar += str(i) + "_"return strvar.rstrip("_")"""# 方法二lst_new = []for i in container:lst_new.append(str(i))return "_".join(lst_new)container = [1,2,3,4,5]
res = func(container)
print(res)# 7
strvar = "k:1|k1:2|k2:3|k3:4" def func(strvar):'''# 方法一lst = strvar.split("|")print(lst) # ['k:1', 'k1:2', 'k2:3', 'k3:4']dic = {}for i in lst:k,v = i.split(":")dic[k] = v"""['k', '1']['k1', '2']['k2', '3']['k3', '4']"""return dic'''# 方法二lst = strvar.split("|")lst_new = []for i in lst:lst_new.append(i.split(":"))return dict(lst_new)print(func(strvar))# 8
li= [11,22,33,44,55,66,77,88,99,90]
lst1 = []
lst2 = []
dic = {"k1":None,"k2":None}
def func(li):for i in li:if i > 66:lst1.append(i)elif i < 66:lst2.append(i)dic["k1"] = lst1dic["k2"] = lst2return dicres = func(li)
print(res)  

【九】Python全栈之路--文件函数_函数参数相关推荐

  1. 【八】Python全栈之路--文件操作

    文章目录 1. 字典的相关函数 2. 集合的操作_函数 3. 文件基本操作 4. 文件扩展模式 1. 字典的相关函数 字典的相关函数 # ### 字典的相关函数 dic = {} # 增 # 1.普通 ...

  2. 【十二】Python全栈之路--推导式_生成器

    文章目录 1. 推导式 2. 推导式练习 3. 集合_字典推导式 4. 生成器 4.1 生成器表达式 4.2 生成器函数 5. 小练习 1. 推导式 # ### 推导式 : 通过一行循环判断遍历出一些 ...

  3. Python全栈之路系列之数字数据类型

    上篇文章中我们简单的体验了Python语言基本概念与语法,那么在继续深入下去的过程中,不妨先学习几个常见的Python内置数据类型?这也是大部分Python教科书的学习目录,由浅至深,慢慢深入. Py ...

  4. 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂

    Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...

  5. Python全栈之路---day01(背景、语法初识)

    PART ONE Python背景知识 Python历史 1989年的圣诞节期间,荷兰人吉多·范罗苏姆(Guido van Rossum),即我们熟悉的龟叔,在阿姆斯特丹不堪眼前的无趣生活,决心开发一 ...

  6. 【四十一】Python全栈之路--JS

    文章目录 1. js的数据类型 1.1 js引入方式 1.2 注释变量 1.3 数据类型 2. js类型转换_运算符 2.1 强制转换_Number 2.2 强制转换_String 2.3 强制转换_ ...

  7. 【四十二】Python全栈之路--JS

    文章目录 1. js对象 1.1 object对象 1.2 json对象 2. js字符串函数 3. js数组相关方法 4. js数学对象相关方法 5. BOM对象 5.1 定时器 5.2 获取年月日 ...

  8. Python全栈之路系列之基础篇

    Python的诞生 Python是著名的"龟叔"Guido van Rossum(吉多·范罗苏姆)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python语 ...

  9. Python全栈之路系列之面向对象基础

    面向对象基本介绍 Python编程方式: 面向过程编程 面向函数编程 面向对象编程 名称定义: 如果函数没有在类中称之为函数 如果函数在类中称之为方法 创建类 在学习过程中有什么不懂得可以加我的 py ...

最新文章

  1. 文件操作之按照字符读写文件
  2. 反思浏览器可以postman调试不通:直接从浏览器复制的参数有空格,查询为空
  3. UIWebView UITextView
  4. html网页如何获取后台数据库的数据(html + ajax + php + mysql)
  5. 剖析 epoll ET/LT 触发方式的性能差异误解(定性分析)
  6. linux的特殊符号与正则表达式
  7. ios7 JavaScriptCore.framework
  8. 学生成绩管理系统sql C#
  9. 互联网广告请求链路_微博广告推荐策略工程架构体系演进
  10. 设计模式 — 工厂模式
  11. 个人认为安卓开发前景
  12. 微信小程序实现Tab选项卡(极简单版)
  13. Git:git安装教程和检查是否安装成功
  14. matplotlib通过二维矩阵画散点图并且对每个点进行标记
  15. 重回童年4399| 【黄金矿工】游戏制作+解析
  16. OpenAL编程手册 - (1)
  17. 线性代数系列讲解第八篇投影及AX=b(无解情况)求近似解及最小二乘法
  18. Android Wear 上位:Google Glass 进冷宫
  19. Win 7系统中F1-F12的功能
  20. 在js中对中文和特殊字符转码,js转码(转载)

热门文章

  1. Android调用优酷SDK实现上传视频到优酷
  2. 站酷基于服务网格ASM的生产实践
  3. 吉利车用鸿蒙系统,要来了?网曝吉利将与华为鸿蒙系统达成合作
  4. 前端程序媛辞职考研没上岸的结果
  5. 学习如何使用打印服务API【转】
  6. 投影仪怎么选好坏?投影仪哪个品牌好
  7. CAD闭合多边形转为ARCGIS中面要素,遇到的几个问题
  8. 分享:如何在word中高亮代码
  9. java计算机毕业设计vue.js开发红酒网站MyBatis+系统+LW文档+源码+调试部署
  10. 【考研词汇训练营】Day 8 —— complete,traditional,extra,afford,professional,require