Python基础知识学习总结(七)

文章目录

  • [一. 函数](#一. 函数)
    • [1. 定义函数](#1. 定义函数)
    • [2. 语法及实例](#2. 语法及实例)
    • [3. 函数调用](#3. 函数调用)
    • [4. 参数传递](#4. 参数传递)
    • [5. 可更改与不可更改对象](#5. 可更改与不可更改对象)
    • [6. 传可变对象实例](#6. 传可变对象实例)
  • [二. 文件I/O](#二. 文件I/O)
    • [1. 定义](#1. 定义)
    • [2. File对象的属性](#2. File对象的属性)
    • [3. open 函数](#3. open 函数)
    • [4. write()方法](#4. write()方法)
    • [5. read()方法](#5. read()方法)
    • [6. 文件定位](#6. 文件定位)

一. 函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

1. 定义函数

你可以自定义一个自己想要功能的函数,以下是简单的规则:

  1. 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 () 。
  2. 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  3. 函数的第一行语句可以选择性地使用文档字符串---用于存放函数说明。
  4. 函数内容以冒号起始,并且缩进。
  5. return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

2. 语法及实例

python 复制代码
def func(str):
   "打印任何传入的字符串"
   print(str)
   return

3. 函数调用

定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。

这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。

如下实例调用了**func()**函数

python 复制代码
def func(str):
   print(str)
   return

# 调用函数
func("潘家辉")
func("是大佬!")

4. 参数传递

在 python 中,类型属于对象,变量是没有类型的:

Python 复制代码
a=[1,2,3] 
a="潘家辉大佬!"

以上代码中, [1,2,3] 是 List 类型, "潘家辉大佬!" 是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是 List 类型对象,也可以指向 String 类型对象。

5. 可更改与不可更改对象

在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

  1. 不可变类型: 变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。
  2. 可变类型: 变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。

python 函数的参数传递:

  1. 不可变类型: 类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身;
  2. 可变类型: 类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响。

python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

python 复制代码
def func(a):
   a = 10
   return a

b = 2
func(b)
print(b)  

实例中有 int 对象 2,指向它的变量是 b,在传递给 func 函数时,按传值的方式复制了变量 b,a 和 b 都指向了同一个 Int 对象,在 a=10 时,则新生成一个 int 值对象 10,并让 a 指向它。

如果改成

python 复制代码
def func(a):
   a = 10
   return a

b = 2
func(b)
print(b)
print(func(b))

把a的形参赋值为b,之后返回a

6. 传可变对象实例

python 复制代码
# 可写函数说明
def fun(list):
   list.append(["大", "佬"])
   print("函数内取值: ", list)
   return

# 调用func函数
list = ["潘","家","辉"]
fun(list)
print("函数外取值: ", list)

将 list 真正的传过去,修改后fun外部的list也会受影响。

二. 文件I/O

1. 定义

Python 提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用 file 对象做大部分的文件操作,即打开和关闭文件

2. File对象的属性

一个文件被打开后,你有一个file对象,你可以得到有关该文件的各种信息。

file对象相关的所有属性的列表:

属性 描述
file.closed 返回true如果文件已被关闭,否则返回false。
file.mode 返回被打开文件的访问模式。
file.name 返回文件的名称。
file.close() 关闭文件
file.flush() 清除输出缓冲区
file.next() 返回下一行或引发stopTteration,在Python3中,对应方法为f.next()
file.seek(offset[whence]) 查找新文件位置,whence:起点,0: 从文件头,1:从当前位置,2:从文件尾部 offset:偏移量
file.writelines(line) 写入序列line中的所有字符串
file.read(n) 最多读取n个字节
file.softspace 布尔值,指示在使用print语句时,是否应该在一个值之前打印空格字符。
file.xreadlines 读取文件,向下兼容
file.encoding 文件编码。如果没有使用任何编码该值为none
file.readinto()
file.tell() 返回当前文件指针
file.errors
file.readline([n]) 读取单行输入的最多n个字符,如果省略n,则读取整行
file.truncate([n]) 将文件截断为最多n个字符
file.fileno() 返回一个整数文件描述符,从3开始
file.newlines 在通用换行符模式下打开一个文件,该属性包含可在文件中实际找到的换行符吧表示。 如果没有找到换行符,该值为none,将会看到一个包含'\n','\r'或'\r\n'的字符串,或者一个包含所有不同换行符的元组
file.readlines([size]) 读取所有行并返回一个列表,size用于指定在读取操作停止前在文件上读取的近似字符数
file.write(s) 写入字符串
file.isatty() 是否是终端设备文件

3. open 函数

必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。

python 复制代码
file object = open(file_name [, access_mode][, buffering])

各个参数的细节如下:

参数 描述
file_name file_name变量是一个包含了你要访问的文件名称的字符串值。
access_mode access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读®。
buffering 如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

不同模式打开文件的完全列表:

模式 描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(不推荐)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

4. write()方法

读写文件:

file对象提供了一系列方法,能让我们的文件访问更轻松。来看看如何使用read()和write()方法来读取和写入文件。

write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

write()方法不会在字符串的结尾添加换行符('\n')。

python 复制代码
fo = open("password.txt", "w")
# 写入
fo.write( "hello!\nworld!\n")
# 关闭打开的文件
fo.close()

注意: 会清空文件以前的内容重写

5. read()方法

read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

python 复制代码
fo = open("password.txt", "r+")
# 读取
str = fo.read(10)
print("读取的字符串是 : ", str)
# 关闭打开的文件
fo.close()

6. 文件定位

tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后。

seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。

如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。

python 复制代码
# 打开一个文件
fo = open("password.txt", "r+")
str = fo.read(10)
print("读取的字符串是 : ", str)

# 查找当前位置
position = fo.tell()
print("当前文件位置 : ", position)

# 把指针再次重新定位到文件开头
position = fo.seek(0, 0)
str = fo.read(10)
print("重新读取字符串 : ", str)
# 关闭打开的文件
fo.close()
相关推荐
安全在心中5 分钟前
网页解析 lxml 库--实战
开发语言·python
Alueaxten(上学版)8 分钟前
【软考】程序设计语言基础
经验分享·笔记·学习·软件工程·软考
Beginner_bml10 分钟前
共享内存(C语言)
服务器·c语言·开发语言
异构算力老群群14 分钟前
如何将Git本地代码推送到Gitee云端仓库
开发语言·git·gitee
walfar20 分钟前
动手学深度学习(pytorch)学习记录29-网络中的网络(NiN)[学习记录]
pytorch·深度学习·学习
杰克逊的日记21 分钟前
PyTorch----模型运维与实战
人工智能·pytorch·python·gpu
不是仙人的闲人27 分钟前
C++ 标准库的典型内容
开发语言·c++
hnjzsyjyj31 分钟前
Python在一条语句中获取多个输入的代码
python
转瞬都有34 分钟前
sqli-labs靶场自动化利用工具——第13关
python·sql·网络安全·自动化
不染_是非42 分钟前
Django学习实战篇三(适合略有基础的新手小白学习)(从0开发项目)
数据库·后端·学习·django·web