Python面向对象之类的继承,类中封装和可管理属性
类的继承
从已有类中衍生出新的类,添加或修改部分功能,能提高代码复用。
子类是从父类派生出来的新类。
子类继承了父类的属性和方法,并且可以添加自己的属性和方法。
123456789101112131415161718192021222324class A(): def foo(self): print('A.foo') def zoo(self): print('A.zoo') class B(A): # B 类将继承 A 类的所有属性和方法。 def fooo(self): super().foo() # 使用 super() 函数调用父类 A 的 foo方法。 print('B.foo') def bar(self): print('B.bar') a = A()b = B()b.bar()a = A()b = B()# a.foo()# b.fooo()#...
Python面向对象之匿名函数,闭包与装饰器
匿名函数
lambda函数
匿名函数(也称为lambda函数)是一种可以在需要时快速定义的小型函数。
12sq = lambda x: x * xsq(2)
这里用到的 lambda
表达式与下面的函数定义有着相同的功能:
12345def sq(x): return(x * x)sq(2)print((lambda x: x * x)(2))
lambda表达式的基本语法如下:
lambda arg1,arg2,arg3...: <表达式>
其arg1/arg2/arg3为函数的参数
<表达式>相当于函数体
函数返回值:表达式的计算结果
注意:
lambda实际生成了一个函数对象。
lambda表达式只允许包含一个表达式。
lambda函数的使用:
可以作为另一个函数的参数传递,用于定制特定的行为。
123nums = [1, 2, 3, 4, 5]result = list(map(lambda x: x + 1,...
Python面向对象之对象和类
对象和类
由对象说起
对象与对象名称之间的区别
把变量理解为附加在对象上的标注。创建对象之后才会把变量分配给对象
例:变量 a 和 b 引用同一个列表,而不是那个列表的副本
1234a = [1, 2, 3]b = ab.append(4)b
image-20250514154637571
类与实例
在Python中通常使用class语句来定义一个类(类对象)
class定义的对象(类)可以用于产生新的对象(实例)。
12345class Person(): pass someone = Person()print(id(someone),...
Python面向对象之函数之函数简介与参数
函数
单一功能的封装。
实现代码复用。
Python语言中使用函数分为两个步骤:定义函数和调用函数。
定义函数,即根据函数的输入、输出和数据处理完成函数代码的编写。
定义函数只是规定了函数会执行什么操作,但并不会真正去执行。
调用函数,即真正去执行函数中的代码,是根据传入的数据完成特定的运算,并将运算结果返回到函数调用位置的过程。
定义函数
12345def functionname([parameters]): """docstring """ function_suite [return [expression]]
函数命名规范和变量命名一样
必须使用字母或者下划线_开头
仅能含有字母、数字和下划线
调用函数
语法格式:函数名称(), 括号中传入参数值。
1234def print_things(name): print(name ,...
Python面向对象之变量的作用域
变量的作用域
局部变量和全局变量。
变量的作用域是指变量的作用范围,即定义一个变量后,在哪些地方可以使用这个变量。
按照作用域的不同,Python 中的变量可分为局部变量和全局变量。
例:我们定义并测试一个函数,它读取两个变量的值。
12345678910# 读取两个变量的值。变量a是函数的参数;变量b,这个函数没有定义它。def f1(a): print(a) print(b)b = 5f1(2)# 2# 5
局部变量:在一个函数中定义的变量就是局部变量(包括形参),其作用域是从定义局部变量的位置至函数结束位置。
全局变量:在所有函数外定义的变量就是全局变量,其在所有函数中都可以使用。
123456def f1(a): print(a) print(b)b = 6 #如果先给全局变量b赋值,然后再调用f1,就不会出错。f1(3)
12345678910b = 6def f2(a): print(a) b = 7 print(b) b = 9 #...
Python常用模块之正则表达式与时间日期模块
Python的模块、包和库
模块(Module)通常以.py为扩展名,可以被其他程序通过import语句导入使用。
包(Package)包含多个模块,必须包含一个特殊的__init__.py文件,这个文件可以为空,但它的存在表明这个目录可以被作为一个包来使用。
库(Library)是一组完成特定功能的模块或包的集合,第三方库是Python强大生态系统的重要组成部分,它们提供了各种各样的工具和框架,使得Python成为一个功能丰富的编程语言。
re模块
使用 re
模块来处理正则表达式,正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
简单的正则
.:匹配除换行符...
Python的文件操作
Python的文件操作
文件的打开与关闭
文件的读取与写入
文件的打开
内置函数:open(文件名, 模式)
os模块的函数:os.open(文件名, 模式)
with open(文件名, 模式) as file
文件的关闭
fileobject.close() fileobject是文件对象
os.close(file) 关闭文件
12345file_1 = open('F:\\file_1.txt', 'r')print('file_1---', file_1, type(file_1))#关闭文件之后,python才能释放对该文件的控制,可以去尝试删除该文件file_1.close()
默认的文件编码encoding一般依赖于系统的区域设置和Python的版本。
cp936代表GBK编码
标准编码参考:https://docs.python.org/3/library/codecs.html
123import io ...
Python的推导式、迭代器和生成器
Python推导式
列表推导式: [expression for item in iterable]
集合推导式: {expression for item in iterable}
字典推导式:
{key_expression: value_expression for item in iterable}
item是一个变量,用于遍历iterable中的元素
1234567891011121314#列表推导式:list_com = [x**2 for x in range(10) if x**2 < 40]list_com# [0, 1, 4, 9, 16, 25, 36]#集合推导式 ,代表什么意思set_com = {x**2 if x**2 % 2==0 else x**2 + 1 for x in range(10)}set_com# {0, 2, 4, 10, 16, 26, 36, 50, 64, 82}#字典推导式dict_com = {x:...
Python的数据类型
Python的数据类型
数值(Numbers)
字符串(String)
元组(Tuple)
列表(List)
集合(Set)
字典(Dictionary)
……
其他数据类型
字节类型(Bytes):b’Hello’
字节数组(Byte Arrays): bytearray(b’Hello’)
空类型(None):没有返回的函数值
未执行的(NotImplemented):在运算时,对象不支持,返回该值
省略号(Ellipsis):用于Numpy的切片或者表示无限循环
Python数据类型-数值型
Python数值型介绍
整型(int):123
布尔型(bool):False(0)、True(1)
浮点型(float):123.04
复数型(complex):3 + 7j、real +...
Python的浅复制与深复制
Python的浅复制与深复制
对于不可变对象来说,因其值不可变,复制一个副本对它的作用不大。但对于可变对象来说,因其值可变,很多时候复制一个副本可以保存它未改变前的值,用来做对比或者做数据备份。
创建一个副本,这里涉及到浅复制和深复制。
浅复制与深复制的构造方法
首先都需要导入copy模块
浅复制:copy.copy(x)
深复制:copy.deepcopy(x)
其中浅复制还可以用切片实现:
例如:a = [1,2,3] ; aa = a[:]
浅复制与深复制的区别
浅复制:复制内层容器时不会单独开辟空间,而是引用原来的地址。
深复制:复制内层不可变的容器时不会单独开辟空间,引用其原地址;若是内层可变的容器,则会单独开辟空间
容器:
可以在里面装下多个元素的,可以用in,...