01Python基础阶段_Day06
匿名函数 lambda
def 函数名(参数列表): 函数体
格式: lambda [形参1], [形参2], … : [单行表达式] 或 [函数调用]
lambda定义和普通函数的区别:
- lambda 没有函数名
- lambda 参数列表外没有括号
- lambda 函数体中,只能实现简单的表达式计算或函数调用
- lambda 函数体中,不能使用Return,if,while,for-in 这些都不行
- lambda 函数体中,可以使用if 实现的三目运算符.
使用场景: 变量 = lambda …
一般情况下,因为lambda的局限性,使得他不能实现复杂功能,只能实现一些简单功能 那么在使用时,一般会实现一个简单的,一次性使用的场景
高阶函数
map() 关系映射 functools.reduce() filter()
文件操作概述及操作过程
文件作用:进行持久化存储数据
操作过程: 双击打开 点叉关闭
程序操作文件的过程: 打开-> 设置打开的模式,(读写) open(打开文件路径,打开模式) 操作文件(读取) 关闭-> close()
文件的访问模式
读取: 文本形式 程序文件 .txt 文件 .rtf 文件 二进制形式 音频文件 视频文件 图片文件
写入: 文本形式 程序文件 .txt 文件 .rtf 文件 二进制形式 音频文件 视频文件 图片文件
以文本方式打开方式的模式 r -> rt -> read text 以文本方式打开文件读,文件存在,打开成功,文件不存在,打开失败 w -> wt -> write text 以文本方式打开文件写,不管文件是否存在,都会新创建一个新文件 a -> at -> append text 以文件方式打开文件追加,文件不存在,创建文件,文件存在,那么打开文件然后将光标移动到文件的最后
以二进制形式打开文件的模式 rb 以二进制形式打开文件读取 wb 以二进制形式打开文件写入 ab 以二进制形式打开文件追加
(了解) r+ 这三种模式都具有读取写入功能 w+ a+
文件的读取
read()
文件读取的几种方式
read() # 一次性将整个文件内容读取出来,不适合大文件读取 read(size) # 掌握 读取指定的字节数的文件内容 ,如果文件最后没有内容了,那么read的返回值是空字符串 , “” 一般指定4096 readline() # 读取一行 readlines() # 一次性将整个文件内的内容以行的形式读取出来,放到一个列表中
文件的写入
write(content) 该函数用来向文件中写入数据 前提: 使用该函数时,打开文件时,必须要给定写入权限,要具有写入模式
常用文件和文件夹操作
os 模块 rename() remove() mkdir() getcwd() chdir() listdir() 掌握 rmdir()
批量修改文件名后复制文件
重点注意: 翻车点: 当以二进制模式打开文件进行文件操作时. read 函数最终读取文件内容为空时,返回的结果为 b’’ 表示是一个二进制的空字符串 在 Python2.7版本中. ‘’ == b’’ 结果为True 在 Python3.6版本中. ‘’ == b’’ 结果为False
面向对象概述
面向对象生活举例
类: 是对现实事物的属性和行为的抽象
类不能具体的表示一个真实存在的事物.
对象: 是类的一种实例表示 是真实存在的,看得见摸得到的
类与对象的关系
类(Class) 由3个部分构成
类的名称:类名
类的属性:一组数据
类的方法:允许对进行操作的方法 (行为)
类的定义格式
经典类: class 类名: 属性 行为
新式类: class 类名(object): 属性 行为
在 python3 以后,只有新式类
创建对象和使用对象的格式
对象名 = 类名(参数列表…)
对象调用方法的格式: 对象名.方法名(参数列表) 注意: 方法中参数列表中的第一个参数self,不需要手动传递,这个参数是由解释器在执行程序时,自动传递的 默认会将当前调用方法的对象引用传递进去
创建多个对象
问:如果通过同一个类,创建多次对象时,多次创建的对象是否是同一个? 答:
部分上课代码
``
def show():
print("hello python")
func = show
print(func)
print(show)
func()
def call_function(func):
func()
call_function(show)
func = lambda: 1 + 1
print(func)
print(func())
func = lambda x: print((x ** 10))
func(2)
my_list = [1, 2, 3, 4, 5]
def f(x):
return x ** 3
result_list = map(f, my_list)
for i in result_list:
print(i)
result_list = map(lambda n: n ** 3, my_list)
for i in result_list:
print(i)
import functools
my_list = list("hello")
result = functools.reduce(lambda s1, s2: s1 + s2, my_list)
print(result)
my_list = [i for i in range(1, 6)]
result = functools.reduce(lambda n1, n2: n1 * n2, my_list)
print(result)
my_list = ["123", "234", "abc", "@#$", " ", "abc234", "123abc"]
num_list = filter(lambda s: s.isdigit(), my_list)
for s in list(num_list):
print(s)
my_list = [7, 2, 6, 1, 5, 3, 4, 8, 0]
my_list.sort()
print(my_list)
my_list = [{"id": 1, "name": "tom", "age": 12}, {"id": 3, "name": "rose", "age": 30},
{"id": 2, "name": "jack", "age": 27}]
my_list.sort(key=lambda d: d["id"])
print(my_list)
file = open("a.txt", "rt")
while True:
content = file.read(1)
if content == "":
break
print(content, end="")
file.close()
import os
cwd = os.getcwd()
print(cwd)
file_list = os.listdir(".")
print(file_list)
for i in file_list:
print(i)
def file_copy(src, dst):
file_r = open(src, "r")
file_w = open(dst, "w")
while True:
content = file_r.read(1024)
if content == "":
print("文件拷贝成功")
break
file_w.write(content)
file_r.close()
file_w.close()
file_copy("b.txt", "b_bak.txt")
|