9月14日我的学习心得与个人理解

文件拷贝

格式:with open(r'文件路径名','模式') as 变量

   with open(r'a.py','rb') as f1:  #以二进制的读模式打开a.py文件

     data = f1.read()  #提取a.py文件内容到data中

   with open(r'b.py','wb') as f2:  #以二进制的写模式打开b.py文件

     f2.write(data)  #将data数据a.py文件内容写入到b.py中

判断文件是否可读

  print(f.readable())  #Ture为可执行,False为不可执行

一次性读取文件所有内容

  print(f.read())

一次读取一行文件内容

  print(f.readline())

将文件内容全部读出按行放入列表中

  print(f.readlines())

循环读取文件内容

  for line in f:

    print(line)

判断文件是否可写

  print(f.writeable())  #Ture为可执行,False为不可执行

写入内容

  f.write('数据')

  f.writelines(['元素1','元素2','元素3'...])

查看文件名

  print(f.name)

将内存数据立刻存到硬盘

  f.flush()

with open(r'a.txt','r',encoding='utf-8') as f:

  print(f.read())  #f.read操作后光标出现在文件的默认位置

  f.seek(3,0)  #控制文件内光标移动

  print(f.tell())  #查看当前光标位置

  print(f.read())  #无内容可以读取

文件修改

方式1

1.1先读取待修改文件内容

with open(r'a.txt','r',encoding='utf-8') as f:

  data = f.read()  #读取出来数据为字符串模式

  print(data,type(data))

1.2使用字符串的替换

with open(r'a.txt','w',encoding='utf-8') as f1:

  f1.write(data.replace('jack','tony'))

方式2

先创建一个新文件 然后将老文件内容循环读取出来并写入新文件
写完之后将老文件删除 将新文件重新命名为老文件名
实现思路:以读的方式打开原文件,以写的方式打开一个临时文件,一行行读取原文件内容,修改完后写入临时文件...,删掉原文件,将临时文件重命名原文件名
优点: 不会占用过多的内存
缺点: 在文件修改过程中同一份数据存了两份

import os

with open('a.txt',mode='r',encoding='utf-8') as read_f,\

open('a.txt.swap',mode='w',encoding='utf-8') as wrife_f:

for line in read_f:

wrife_f.write(line.replace('egonDSB','jasonNB'))

os.remove('a.txt') # 将原文件删除

os.rename('a.txt.swap','a.txt') # 将新文件重新命名为老文件

函数

函数标准格式

def 函数名(参数1,参数2,...):

  '''函数的注释'''

  函数体代码

  return 函数的返回值

1.def   是定义函数的关键字

2.函数名    跟变量名的命名类似 尽量做到见名知意

3.括号内的参数    在使用函数的时候可以给函数体内部传入额外的数据(参数是可有可无的)

4.注释    用来对函数的解释

5.函数体代码   整个函数核心的业务逻辑

6.关键字return    你在使用完函数之后 函数可以给你一个返回值

函数种类

1.无参函数

2.有参函数

3.空函数

函数的返回值

1.当函数没有return关键字的时候调用函数完毕之后默认返回None

2.函数体代码如果有return,那么return后面写上面就返回什么

3.函数体代码遇到return会立刻结束函数的运行

4.当return返回多个数据之后会默认组织成元组的形式返回

函数的参数

形式参数

函数在定义阶段括号内写入的参数叫做形式参数

简称形参

形参类似于变量名

实际参数

函数在调用阶段括号内写入的参数叫做实际参数

简称实参

实参类似于变量的值

函数在调用的时候 实参会赋值给形参

等函数运行完毕之后 两者之间解除绑定关系

1.位置参数

def index(a,b): # 函数有两个形参 a和b

print(a,b)

index(1,2)    # 实参1赋值给了形参a 实参2赋值给了形参b

index()    # 少传报错

index(1,2,3)    # 多传报错

位置参数有几个就对应着传几个 少传多传会报错

2.关键字参数

def index(a,b): # 函数有两个形参 a和b

print(a,b)

index(b=2,a=1) # 指名道姓的给形参传值

index(b=4,1) # 报错

index(2,a=2) # 报错

index(1,b=6) # 可以

位置参数必须在关键字参数的前面

越短的越简单的越靠前

越长的越复杂的越靠后

3.默认参数

在函数定义阶段直接给形参赋值

def register(username,gender='male'):

print('学生姓名:%s,学生性别:%s'%(username,gender))

register('tony')

register('lili','female')

默认参数就是用户没写就用默认的

用户写了就用自己的

4.可变长参数

def index(*a,**k):

print('from index',a)

print('from index',k)

print(a,k)

无论给index传多少个位置参数 index函数都能够正常的运行

*号在形参中 会接收多余的位置参数,自动组织成元组的形式赋值给*后面的变量名

**号在形参中 会接收多余的关键字参数,自动组织成字典的形式赋值给**后面的变量名

def login(*args,**kwargs):

print(args,kwargs)

l = [1,2,3,4,5,6,7,8,9]

d = {'username':'jason','password':123}

login(l)  # ([1, 2, 3, 4, 5, 6, 7, 8, 9],)  {}

login(*l) # (1, 2, 3, 4, 5, 6, 7, 8, 9) {} login(1,2,3,4,5,6,7,8,9)

login(1,2,3,4,5,6,7,8,9) # (1, 2, 3, 4, 5, 6, 7, 8, 9) {}

*在实参中会将列表打散成位置参数的形式 挨个传入函数

**在实参中会将字典打散成关键字参数的形式 挨个传入函数

1.内置名称空间

python解释器启动之后会自动帮你创建的名称空间

2.全局名称空间

运行python文件就会产生全局名称空间

3.局部名称空间

函数运行之后才会产生的名称空间

函数运行完毕会自动关闭

作用域

如果在全局查找名字顺序

全局 内置

如果在局部查找名字顺序

局部 全局 内置

只能从全局到内置

 

posted @ 2020-09-15 23:16  ACE2020  阅读(123)  评论(0)    收藏  举报