
08 阶段复习2
上节课作业
import os
#1.创建一个python.txt文件,文件内的内容为->文件名.后缀
with open('python.txt','w')as f:
f.write('python.txt')
#2.将第一题的文件名进行更换
os.rename('python.txt','python_New.txt')
#3.读取内容进行大小写更换
with open('python_New.txt','r+')as f: # 这里使用r+参数,可以使用写和读的功能
data = f.read().swapcase() # 将里面的内容互换大小写后保存在data变量中
f.seek(0) # 将光标放在最前面
f.write(data) # 覆盖前面的内容
f.seek(0) # 重新编写后再将光标放在最前面
print(f.read()) # 读取现在文件里的内容
自定义函数
"""
函数
内置函数 python自带的函数直接调用即可 print() range() len()
自定义函数:无参函数、有参函数
无参函数:没有定义参数的函数
有参函数:定义了参数的函数,调用时需要输入实参
"""
"""
定义方法
def 函数名(形参):
函数体代码块
return "想要返回的值"
调用方法
函数名(实参)
形参:代表函数被调用时的接收的具体参数,没有实际值
实参:调用时输入的具体值的参数
"""
str1 = 'today is a good day'
# print(len(str1)) # 查看字符串的长度
# 使用自定义函数,实现查看字符串长度
def get_len(result):
count = 0
for i in result:
count += 1
return count
print(get_len(str1))
print(get_len) # 单独打印函数名可以查看在内存中的十六进制内容输出形式的位置
# 函数的内容可以用变量接收,并且变量名能和函数名一样使用
func = get_len
print(func(str1))
# 必备参数:函数定义与调用时,里面的参数必须一致
def get_area(length,width):
area = length * width
return area
get_area(3, 4)
# 默认参数,函数定义参数时可以给参数一个默认值
def get_salary(hour,hourly_wage = 20):
salary = hour * hourly_wage
return salary
print(get_salary(10))
# 不定长参数 *args **kwargs
def note(*args, **kwargs):
print(args) # 接收没有元素名的值,以元组形式保存
print(kwargs) # 接收有元素名的值,以键值对形式保存
note('今天感觉良好', '今天运气真好,捡到10块钱', pocket=10,luckly=1000)
"""
函数的作用域: 全局变量 和 局部变量
函数内部可以访问外部的变量,但是不能直接修改
"""
# 全局变量
num = 10
def get_data():
global num # 对全局变量使用global进行声明之后即可修改
num += 1 # 无法直接修改全局变量的值
print(num)
get_data()
# 局部变量:嵌套函数内的变量
def func1():
data = 1
def func2():
nonlocal data # 对局部变量使用nonlocal进行声明之后即可修改
data += 1 # 无法直接修改局部变量的值
print(data)
func2()
func1()
# 函数的闭包:将嵌套函数的内部函数的函数名作为外部函数的返回值
"""
闭包在Python中的作用主要包括保护数据、实现装饰器(面向对象后的课程)、以及避免程序重复计算,提高程序的执行效率
"""
def test1():
def test2():
return '这是内部函数输出的值'
return test2
x = test1()
print(x()) # 调用时无需再调用内部函数名,同时保护代码不被外部程序访问和修改
# 递归函数和匿名函数
# 递归函数:创造函数,以计算数字的阶乘
def count(n):
if n <= 1:
return 1
else:
return n * count(n-1)
print(count(5))
# 匿名函数:无需使用def关键字定义函数,使用lambda将函数写成一行,用变量接收,并且变量作为函数名
compute = lambda x,y:x**y
print(compute(3, 2))
li = ['1','3','2','10','7','5']
li.sort(key=lambda x:int(x)) # 字符串类型无法进行排序时,使用匿名函数对内容进行操作
print(li)
文件操作
"""
文件操作
使用open()函数对文件进行操作
open(文件路径,访问模式)
文件路径
绝对路径:文件路径的全路径,从磁盘开始至文件的位置
相对路径:文件路径的部分路径,文件位置之间的内容大多可以用两个英文句号代替: ..
访问模式
r 只读(read) r+(先清空文件内容后,进行写入和读取的操作)
w 只写(write) w+(先清空文件内容后,进行写入和读取的操作)
a 追加(append)
b 二进制文件操作 rb 对二进制文件进行读取 wb 对二进制文件进行写入
对文件使用的功能
read() 读取
write() 写入
writelines() 写入多行内容,用中括号包裹,逗号分隔,每一个内容前添加转义字符\n
flush() 刷新当前文件的状态
close() 关闭文件
tell() 查看文件内光标目前的位置
seek() 修改光标的位置 seek(0) 将光标放到文字之前 seek(0,2) 将光标放到文字最后
"""
# 文件的写入
file = open('test01.txt', 'w')
file.write('hello python')
file.writelines(['\n第一行内容', '\n第二行内容'])
file.close()
# w+ 对于文件内容进行一个重写,清空文件内容后进行操作
file1 = open('test01.txt', 'w+')
file1.write('这是w+模式重写后的内容')
file1.seek(0)
print(file1.read())
file1.close()
# 文件的读取
file2 = open('test01.txt', 'r')
print(file2.read())
file2.close()
# r+ 无法创建不存在的文件
file = open(r'D:\softData\PycharmProjects\ChengQuEdu\day09阶段复习2\test01.txt', 'r+')
file.seek(0, 2) # 可以将光标放在最后进行内容添加,否则指针默认在最前面,编写的内容会对原有内容进行一个覆盖
file.write('\n这是使用r+模式编写的内容')
print(file.tell())
file.seek(0) # 将光标内容移至文字前面
print(file.read())
file.close()
# 文件内容的追加
file = open('test01.txt', 'a')
file.write('\n这是追加后的内容')
file.close()
# 二进制文件的写入和读取
# 写入
file = open('binary_file.txt', 'wb')
file.write(b'this is a binary data')
file.close()
# 读取
file = open('binary_file.txt', 'rb')
print(file.read())
file.close()
"""
上下文管理器
with open
相比使用变量进行文件操作,上下文管理器会自动关闭文件,同时格式会更规范
"""
with open('with_open_file.txt','w') as f:
f.write('这是上下文管理器写入的内容')
IO流
"""
文件io流
可以在内存中创建临时文件以放置内容,不会占用本地空间
导入io包即可使用方法:import io
使用方法
StringIO 生成字符串临时文件
BytesIO 生成二进制临时文件
getvalue() 获取临时文件里保存的所有内容
"""
import io
str_file = io.StringIO()
print(str_file.write('这是写入字符串临时文件中的内容')) # 使用打印将会输出内容长度
print(str_file.getvalue()) # 获取文件中的所有内容
binary_file = io.BytesIO()
print(binary_file.write(b'this is binary data')) # 操作二进制临时文件时需要在字符串前面加b,代表是二进制数据
print(binary_file.getvalue())
文件目录操作
"""
文件目录操作:
对于文件的目录和文件夹进行的一些操作
导入 os 包进行文件夹操作
import os
"""
import os
print(os.getcwd()) # 获取当前文件夹的文件路径:绝对路径
# chdir 改变当前的所在的路径
os.chdir(r'D:\softData\PycharmProjects\ChengQuEdu\作业')
print(os.getcwd())
# listdir 得到当前文件夹下所有的文件
print(os.listdir())
# mkdir 创建文件夹
os.mkdir('folder')
# rename 重命名文件/文件夹
os.rename('folder', 'rename_folder')
os.rename('test1.txt', 'test0.txt')
# remove 文件夹
os.rmdir(r'D:\softData\PycharmProjects\ChengQuEdu\day08-文件\rename_folder') # 删除此文件夹
# 判断文件夹在当前目录是否存在,如不存在则创建,如存在则不进行任何操作
file = 'image'
if not os.path.exists(file):
os.mkdir(file)
如何配置环境变量:上节课有很多的同学在安装第三方库时,出现了很多不一样的问题,这里教大家手动配置一下python解释器,以提前排除环境变量的问题
where python 可以查看是否配置好了python的路径
pip超时报错问题1
# pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple
# 因为是外网下载,很容易超时,后面接上国内源的下载镜像就行
pip超时报错问题2
# 因为pip本身也是一个库,有可能是pip库的版本太低,所以需要进行更新
python.exe -m pip install --upgrade pip
包的创建和导入
# 导入包
import module1
import module2
# 调用包中的函数功能
print(module1.func1())
print(module2.func1())
# 只导入包中的一个函数,并且可以使用as关键字给这一个函数取别名
from module1 import func2 as f2
print(f2())
# 自定义模块方法
import sys
# sys.path.append 只是临时将内容添加到pycharm识别的路径中,仅在当次运行时生效
# 内容更正:通常导入是一个文件夹,单独导入文件可能读取不到
sys.path.append(r'D:\softData\PycharmProjects\cls18\09 python文件目录操作、模块和包的创建与使用')
import test1
print(test1.func1())
module1
print('包1中被导入的运行结果')
def func1():
return '这是包1中函数1的运行结果'
def func2():
return '这是包1中函数2的运行结果'
module2
print('包2中被导入的运行结果')
def func1():
return '这是包2中函数的的运行结果'
主方法main方法
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自。
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果