一、函数大全
1.1 匿名函数 lambda
匿名函数的适用范围,函数仅使用一次,无需重复使用时。
编写命令是仅能使用一行代码
定义方法:lambad 参数列表:lambada体
代码如下:
def zhangzengyang(opr):
if opr =='+':
return lambda a,b:(a+b)
else:
return lambda a,b:(a-b)
f1 = zhangzengyang('+')
f2 = zhangzengyang('-')
print("10+5={}".format(f1(10,5)))
print("10-5={}".format(f2(10,5)))
1.2 过滤函数 filter
作用:对一个可迭代对象进行过滤
filter (function,iterable)
1.3 format
<模板字符串>.format(<逗号分隔的参数>)
print('{}爱吃鱼,{}爱吃骨头'.format('小猫','小狗'))
输出结果:
1.4 try和except
try和expect用于捕获和处理语句块异常,其语法结构如下:
try:
a = int(input("输入被除数:"))
b = int(input("输入除数:"))
c = a / b
print("您输入的两个数相除的结果是:", c )
except (ValueError, ArithmeticError):
print("程序发生了数字格式异常、算术异常之一")
except :
print("未知异常")
print("程序继续运行")
程序运行结果为:
事实上,不管程序代码块是否处于 try 块中,甚至包括 except 块中的代码,只要执行该代码块时出现了异常,系统都会自动生成对应类型的异常。但是,如果此段程序没有用 try 包裹,又或者没有为该异常配置处理它的 except 块,则 Python 解释器将无法处理,程序就会停止运行;反之,如果程序发生的异常经 try 捕获并由 except 处理完成,则程序可以继续执行。
1.5 位置参数和关键字参数
位置参数:
def 函数名(*args)
pass
位置参数相当于一个数组,可以输入多个参数
关键字参数:
def 函数名(**args)
pass
关键字参数相当于一个字典
二、类与对象
2.1创建对象
创建类的语法
class 类名:
pass…
对象创建方法
class Student1:
native_pace='黑龙江'
def __init__(self,name,age):
self.name=name
self.age=age
def eat(self):
print('张曾洋666')
@staticmethod
def method():
print('staticmethod进行了修饰,属于静态方法')
@classmethod
def cm(cls):
print('我是类方法,因为我使用了classmethod进行修饰')
stu=Student1('张三','18')
print(stu.name,stu.age)
stu.eat()
Student1.eat(stu)#与stu.eat()功能相同,都为调用Student1中的eat方法
2.2 封装的实现方式
class Student:
def __int__(self,name,age):
self.name=name
self.__age=age
def show(self):
print(self.name,self.__age)
2.3 继承
语法格式
class 子类类名(父类1,父类2):
pass
- 如果类没有继承任何类,则默认继承object
- Python支持多继承
- 定义子类时,必须在其构造函数中调用父类的构造函数
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
def info(self):
print(self.name,self.age)
class Student(Person):
def __init__(self,name,age,stu_no):
super().__init__(name,age)
self.stu_no=stu_no
class Teacher(Person):
def __init__(self,name,age,teachofyear):
super().__init__(name,age)
self.teachofyear=teachofyear
stu=Student('张三',20,'1001')
teacher=Teacher('李四',34,10)
stu.info()
teacher.info()`
2.4方法重写
在父类中已经构建的函数或成员可以在子类中重写
- 如果子类对继承自父类的某个属性或方法不满意,可以在子类中对其进行重新编写
- 子类重写后的方法中可以通过super().xxx()调用父类中被重写的方法
2.5 object 类
- object类是所有类的父类,因此所有类都有object类的属性和方法。其有很多特殊的方法下面来一一介绍
2.5.1 str()
Object有一个__str__()方法,用于返回一个对于“对象的描述”,对应用于内置函数str()经常用于print()方法,帮我们查看对象的信息,所以我们经常会对__str__()进行重写
2.5.2 dict()
获得类对象或实例对象所绑定的所有属性和方法的字典
2.5.3 len()
通过重写__len__()方法,让内置函数len()的参数可以是自定义类型
2.5.4 add()
通过重写__add__()方法,可以使自定义对象具有“+”功能
2.5.5 new()
用于创建对象
init()
对创建的对象进行初始化
2.6 多态的实现
多态就是“具有多种形态”,它指的是:即便不知道一个变量所引用的对象到底是什么类型,仍然可以通过这个变量调用方法,在运行过程根据变量所引用的对象的类型,动态决定调用哪个对象中的方法
不太确切的说:python没有多态
class Animal(object):
def eat(self):
print('动物会吃')
class Dog(Animal):
def eat(self):
print('狗吃骨头...')
class Cat(Animal):
def eat(self):
print('猫吃鱼')
class Person:
def eat(self):
print('人吃五谷杂粮')
def fun(obj):
obj.eat()
fun(Cat())
fun(Dog())
fun(Animal())
fun(Person())
这里人的类和动物类不属于同一种类,但是他们都可以通过eat()函数调用,因为他们都继承父类object
三、文件相关操作
3.1 编码格式的介绍
Python的解释器使用的使Unicode(内存)
.py文件在磁盘上使用UTF-8存储(外存)
3.2 文件的读写操作
使用内置函数open()创建文件对象,其语法规则为
3.3 常用的文件打开模式
打开模式 | 描述 |
---|---|
r | 以只读模式打开文件,文件的指针会放在文件的开头 |
w | 以只写模式打开文件,如果文件不存在则自动创建文件,原文件存在,则覆盖原有内容,文件指针放在文件的开头 |
a | 以追加的模式打开文件,如果文件不存在则创建,文件指针在文件开头,文件存在,则在文件末尾追加内容,文件指针在原文件末尾 |
b | 以二进制形式打开文件,不能单独使用,需要与其他模式一起使用,rb,或wb |
+ | 以只读方式打开文件,不能单独使用,需要与其他模式一起使用,a+ |
3.4 文件对象的常用方法
方法名 | 说明 |
---|---|
read([size]) | 从文件中读取size个字节或字符的内容返回。若省略[size],则一次性读取全部内容 |
readline() | 从文本文件中读取一行内容 |
readlines | 把文本文件中的每一行都作为独立的字符串对象,并将这些对象放入列表中返回 |
write(str) | 将字符串str内容写入文件 |
weitelins(s_list) | 将字符串列表s_list写入文本文件,不添加换行符 |
seek(offset[,whence]) | 把文件指针移动到新的位置,offset表示相对于whence的位置; offset:为正是从前往后动,为负从后往前动; whence不同的值代表不同含义: 0:从文件头开始计算(默认值) 1:从当前位置开始计算 2:从文件尾开始计算 |
tell() | 返回文件指针的当前位置 |
flush() | 把缓冲区的内容写入文件,但不关闭文件 |
close() | 把缓冲区的内容写入文件,同时关闭文件,释放文件对象相关资源 |
3.5 with 语句(上下文管理器)
with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,以此来达到释放资源的目的
不用with语句时完成图片的复制操作:
src_file= open('logo.png','rb')
target_file=open('copylogo.png','wb')
target_file.write(src_file.read())
target_file.close()
src_file.close()
使用with语句完成图片复制操作:
with open('logo.png','rb') as src_file
with open('copy2logo.png','wb') as target_file
target_file.write(src_file.read() )
两者对比一下,可以省略关闭的命令
3.6 os语句
个人理解:相当于shell操作命令写成了代码的形式
os模块操作目录相关函数
函数 | 说明 |
---|---|
getcwd() | 返回当前的工作目录 |
listdir(path) | 返回指定路径下的文件和目录信息 |
mkdir(path[,mode]) | 创建目录 |
makedirs(path1/path2…[,mode]) | 创建多级目录 |
rmdir(path) | 删除目录 |
removedirs(path1/path…) | 删除多级目录 |
chdir(path) | 将path设置为当前工作目录 |
下面举例说明
import os
print(os.getcwd())#返回当前文件路径
print(os.listdir('../python_project1'))#返回指定路径下的信息
os.mkdir('张曾洋')#创建文件夹
3.7 os.path模块操作目录相关函数
函数 | 说明 |
---|---|
abspath(path) | 获取文件或目录的绝对路径 |
exists(path) | 用于判断文件或目录是否存在,如果存在返回True,否则返回False |
join(path,name) | 将目录与目录或文件名拼接起来 |
splitext() | 分离文件名和扩展名 |
basename(path) | 从一个目录中提取文件名 |
dirname(path) | 从一个路径中提取文件路径,不包括文件名 |
isdir(path) | 用于判断是否为路径 |
四、其他
4.1 traceback模块
traceback可以打印程序异常信息
在日常开发中,我们会做一些基本的异常处理,但是有时候只能打印我们处理的结果或者将异常打印出来,不能直观的知道在哪个文件中的哪一行出错:
def func(num1,num2):
try:
x=num1/num2
return x,y
except Exception as e:
print("错误信息:",e)
func(1,0)
而使用Python中traceback模块来进行处理可以直观异常信息:
import traceback
def func1(num1, num2):
try:
x = num1 * num2
y = num1 / num2
return x, y
except:
traceback.print_exc()
func1(1, 0)