python学习(6)文件操作、函数

一、文件操作

1.文件操作也叫IO操作:

1、读 2、写

文件操作的三个步骤:

1、打开文件

2、操作文件 (针对文件的读和写)

3、关闭文件 (文件必须要关闭,否则会出现内存泄漏问题)

【当文件使用的内存量超过系统本身的内存资源时就会出现内存泄漏】

 

二、文件的具体操作

1.函数特性:

1.1 函数有参数         y=f(x) x是函数f的参数

 

2. open()函数:

A.作用:io操作文件

B.参数:

-file:指的是被操作的文件
-mode:通过什么方式操作文件(读还是写?)
    a:追加  
    w:写文件内容
    r:读取文件内容
-encoding:编码(utf-8,gbk)     (utf-8可以狭义理解为对中文支持非常好,乱码的时候加)

2.1写的操作:

 即使没有文件,open内部会自动创建一个文件,然后把写的内容写进去。
a:追加 (在原内容之上写入新的内容)
w:如果文件有内容,会清空再写。

例1:文件操作的三个步骤:打开、操作、关闭

第一步打开文件:定义文件、操作、编码(乱码的时候加)

第二步写入内容

第三步关闭文件

 

 

 

 

 例2:多行写入(data是个变量,writelines是按行写入)

 

 

 

2.2读的操作:

1、文件存在,那么从文件中读取操作

2、文件不存在,会报FileNotFoundError的错误信息,如[Errno 2] No such file or directory

例1:文件操作的三个步骤:打开、操作、关闭

第一步打开文件:文件、操作、(编码)                         ——open里面的是简写模式,编码不能简写

第二步读取内容                                                                ——读要搭配输出

第三步关闭文件

 

例2:读取文件第一行

 

 

例3:按行读取文件的所有内容

 

2.3自定义文件目录

(读和写的操作没有定义文件目录时,都默认的是在当前文件目录下操作)

 

 

2.4 with上下文   (操作的另一种方式)

它内部可以对文件进行关闭,这样避免了操作文件忘记关闭。

注意:第二行的缩进。

用with 给open( )起别名为f,不用定义变量,也不用关闭文件那一步了。

读:

 

 写:

 

 

三、函数

所谓函数,就是把重复的代码单独的分离出来,放在⼀个公共的地⽅,以后可以⼀直的进⾏调⽤,这样就可以解决多次重复来编写。

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

def 函数名称(函数的形参):
函数表达式

形式参数:形参,函数里面的参数叫形式参数。

实际参数:实参,函数被调用的时候,给函数赋予的值叫实际参数。

 

2.函数调用:

函数写完后,必须要经过调用才可以生效,如果不调用,不会生效

2.1调用函数的方式是:

函数名称(   )

2.2函数调用注意事项:

1、函数在调用的时候,可以填写形式参数,也可以不填写。调用的时候写形式参数,就必须填写实际参数。

调用填写形式参数: add(a=3,b=6)

2、函数在调用的时候,如果不填写形式参数,填写的实际参数要与函数定义时的形式参数的顺序、个数保持一致。

调用不填写形式参数: add(3,6)

3、如果函数在定义的时候没有写形式参数,那么调用的时候就不用写形式参数。()

         

 

3.例:

a.登录函数

(if逻辑判断,判断出登录成功和失败的情况。输入实参调用函数,查看结果。)

调用函数不输入形参:

 

 调用函数输入形参:

 

 

b.注册函数 

(把用户名和密码写入一个文件)

 

c.需求

      步骤:(打开文件→把读取的内容用逗号拆分,并且定义给data→获取列表索引为0的

 

 

四、默认参数和动态参数

1.默认参数:在定义函数的时候给形式参数指定了参数的值。(默认参数不能放在非默认参数前面)

①调用函数时,如果没有传递参数,则会使用默认参数。

以下实例中如果没有传入 password 参数,则使用默认值:

 

 ②调用函数时,如果传递新参数,则使用新参数:

 

 

 

√2.动态参数:定义一个函数的时候,当函数的参数不确定的时候使用:

*:代表元组的数据类型,加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。

**:代表字典的数据类型

如果同时有*args和**kwargs,*args要放在**kwargs前面

*args:

*args用来将参数打包成tuple(元组)给函数体调用。不确定实参的数据类型和个数,使用 *,都会输出为元组类型(元组种的元素可以是列表、字典、元组)

 

 

 

 

** kwargs:

**kwargs 打包关键字参数成dict(字典)给函数体调用。调用的时候必须写成下面这两种格式:

一种是带等号的格式(key=value),可以转为字典类型;另一种是字典前面带俩星号。

 

 

 

 

 使用场景:当参数的个数不确定时,不用写多个函数,用一个动态参数就可以解决。

 

posted @ 2022-03-29 16:09  jia---  阅读(191)  评论(0)    收藏  举报