python 介绍
Python 是⼀种解释型、⾯向对象、动态数据类型的⾼级编程语⾔。它被设计为可读性强、 简洁且易于学习。
Python 具有⾼效的⾼级数据结构,并且⽀持简单有效的⾯向对象编程。
Python 的语法和动态类型,以及解释型语⾔的本质,使它成为在多个平台上编写脚本和快 速开发应⽤的编程语⾔。
python 基本数据类型
注释的使⽤
- 单⾏注释: #
- 多⾏注释:三个单引号 或 三个双引号
- 注意:
- '''引号中的内容为注释部分'''
- """注释引号必须成对出现"""
Python 有六个标准的数据类型:
- Numbers(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
Python 数字
数字数据类型⽤于存储数值。他们是不可改变的数据类型,这意味着改变数字数据类型会分配⼀个新的 对象。
当你指定⼀个值时、Number 对象就会被创建:
var1 = 1
var2 = 10
Python 字符串
python
s = 'abcdef'
print(s[1:5])
str = 'Hello World!'
print(str) # 输出完整字符串
print(str[0]) # 输出字符串中的第⼀个字符
print(str[2:5]) # 输出字符串中第三个⾄第六个之间的字符串
print(str[2:]) # 输出从第三个字符开始的字符串
print(str * 2) # 输出字符串两次
print(str + "TEST") # 输出连接的字符串
Python 列表
python
list = ['Beyond', 786, 2.23, 'john', 70.2] tinylist = [123, 'john']
print(list) # 输出完整列表
print(list[0]) # 输出列表的第⼀个元素
print(list[1:3]) # 输出第⼆个⾄第三个元素
print(list[2:]) # 输出从第三个开始⾄列表末尾的所有元素
print(tinylist * 2) # 输出列表两次
print(list + tinylist) # 打印组合的列表
Python 元组
元组是另⼀个数据类型,类似于 List(列表)。元组⽤ () 标识。内部元素⽤逗号隔开。但是元组不能⼆ 次赋值,相当于只读列表。
python
tuple = ('Beyond', 786, 2.23, 'john', 70.2)
tinytuple = (123, 'john')
print(tuple) # 输出完整元组
print(tuple[0]) # 输出元组的第⼀个元素
print(tuple[1:3]) # 输出第⼆个⾄第四个(不包含)的元素
print(tuple[2:]) # 输出从第三个开始⾄列表末尾的所有元素
print(tinytuple * 2) # 输出元组两次
print(tuple + tinytuple) # 打印组合的元组
Python 字典 dict = {}
python
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name' : 'Beyond', 'code' : 6734, 'dept' : 'sales'}
print(dict['one']) # 输出 This is one print(dict[2]) # 输出 This is two
print(tinydict) # 输出完整的字典
print(tinydict.keys()) # 输出所有键
print(tinydict.values()) # 输出所有值 ```
python 流程语句
在 python 中,命令语句的执⾏顺序是从上往下的,遇到命令运⾏错误时会终⽌。 除此之外的
python 中还有⼀些循环的语句
if-else 条件语句
基本⽤法
if 条件 :
条件为真执⾏的语句
else:
条件为假执⾏的语句
python
name = 'java'
if name == 'python': # 判断变量是否为 python
print('welcome boss') # 并输出欢迎信息
else:
print(name,'不是 python') # 条件不成⽴时输出变量名称 ```
if-elif-else 语句
基本⽤法
if 条件 1 :
条件 1 为真执⾏的语句
elif 条件 2 :
条件 2 为真执⾏的语句
elif 条件 3 :
条件 3 为真执⾏的语句
elif 条件 4 :
条件 4 为真执⾏的语句
else:
以上条件为假执⾏的语句
python
num = 5
if num == 3 : # 判断 num 的值
print('boss')
elif num == 2 :
print('user')
elif num == 1 :
print('worker')
else:
print('error') # 条件均不成⽴时输出
while 循环语句
基本⽤法
while 条件 :
条件为真 重复执⾏的代码
python
count = 0
while count < 10 :
print('The count is :', count)
count = count + 1
print("Good bye!")
for 循环语句
基本⽤法
for 临时变量 in 容器 :
重复执⾏的代码
python
fruits = ['banana', 'apple', 'mango']
for fruit in fruits :
print('当前⽔果 : %s' % fruit)
python 函数
函数的特点:
1、函数是组织好的,可重复使⽤的,⽤来实现单⼀,或相关联功能的代码段。
2、函数使⽤ def 关键字开头,后接函数标识符名称和圆括号()。
3、任何传⼊参数和变量必须放在圆括号中间。圆括号之间可以⽤于定义参数。
4、函数主体内容以冒号开始,函数中的代码块必须缩进
return [表达式] 结束函数,选择性地返回⼀个值给调⽤⽅。不带表达式的 return 相当于 返回 None
基本⽤法
def 函数名(参数) :
"函数⽂档字符串"
代码 1
代码 2
python
def sum(arg1, arg2) :
# 返回 2 个参数的和."
total = arg1 + arg2
print("函数内 : ", total)
return total
# 调⽤ sum 函数
total = sum(10, 20)
print(total) ```
Python模块
Python模块是包含Python代码的⽂件,其扩展名通常为 .py 。模块是Python程序的基本组成部分,它 们提供了封装代码的⽅式,使得代码更加组织化、易于重⽤和维护。
模块可以包含函数、类和变量,也可以包含可执⾏的代码。当⼀个模块被导⼊时(使⽤ import 语
句),Python会执⾏该模块中的代码(如果有的话),并将模块中的函数、类和变量等成员绑定到⼀个 同名的命名空间对象中,这个对象随后可以被导⼊它的程序访问。
Python模块有以下⼏个特点
- 封装性:模块可以将相关的函数、类和变量封装在⼀起,形成⼀个独⽴的代码单元。这有助于保持代码的整洁和组织性。
- 重⽤性:⼀旦⼀个模块被编写和测试完毕,它就可以被多个程序重复使⽤,⽽⽆需重复编写相同的代码。
- 可维护性:模块化的代码更容易维护和更新。如果需要修改某个功能,只需要修改相应的模块,⽽不需要修改整个程序。
- 命名空间管理:每个模块都有⼀个独⽴的命名空间,这有助于避免命名冲突。当两个模块包含相同名称的函数或变量时,它们不会相互⼲扰,因为它们是在不同的命名空间中定义的。
Python模块可以分为系统内置模块、⾃定义模块和第三⽅模块。
pyhton类和对象
在Python中,类和对象是⾯向对象编程(OOP)的两个核⼼概念。它们共同构建了⼀个强⼤的编程框 架,使得开发者能够创建结构化、模块化和可复⽤的代码。
类(Class)
类是⼀个模板或蓝图,它定义了对象的结构和⾏为。类包含了属性和⽅法,这些属性和⽅法定义了对象将拥有的数据(状态)以及可以执⾏的操作(⾏为)。
- 属性:类的属性可以是数据属性或类属性。数据属性⽤于存储对象的特定信息(如实例变量),⽽ 类属性则是类级别的变量,被该类的所有实例共享。
- ⽅法:类的⽅法定义了对象的⾏为。它们是绑定到类的函数,可以通过对象来调⽤。⽅法中的第⼀ 个参数通常是 self ,它代表调⽤该⽅法的对象本身。
对象(Object)
对象是类的实例。每个对象都是根据类模板创建的具体实体,它包含了类定义的属性和⽅法。对象是通 过调⽤类并传递必要的参数给其构造函数(通常是 init ⽅法)来创建的。
- 实例变量:对象创建时, init ⽅法或其他⽅法可以为对象设置特定的实例变量,这些变量在 对象之间是独⽴的。
- ⽅法调⽤:通过对象,可以调⽤其类定义的⽅法,并访问其属性和其他⽅法。
⾯向对象编程的优势
- 封装:通过类,可以将数据和操作数据的函数封装在⼀起,形成⼀个独⽴的单元。这有助于隐藏实 现细节,并提供⼀个清晰的接⼝来访问对象。
- 继承:⼀个类可以继承另⼀个类的属性和⽅法,从⽽创建具有层次结构的类体系。这有助于代码的重⽤和扩展。
- 多态:不同的对象可以通过相同的接⼝调⽤⽅法,⽽这些⽅法在不同的对象上可以有不同的实现。这提供了更⼤的灵活性和可扩展性。
Python魔术⽅法
Python中的魔术⽅法(Magic Methods)也被称为特殊⽅法(Special Methods)或双下⽅法(Dunder Methods),它们是⼀类具有特殊命名规则的⽅法,⽤于定义对象的内置⾏为。这些⽅法的名字前后都带有两个下划线(例如, init 、 str )。
魔术⽅法允许开发者⾃定义对象如何响应Python的内置操作,⽐如打印对象、⽐较对象、算术运算等。
当你对对象执⾏某些操作时,Python解释器会⾃动调⽤相应的魔术⽅法。
当定义魔术⽅法时,请确保它们的⾏为与预期⼀致,以避免引起混淆或错误。
并不是所有的魔术⽅法都需要在你的类中定义,只有当你需要⾃定义某个特定⾏为时才需要定义相应的魔术⽅法。
魔术⽅法的命名是固定的,不能随意更改。如果你尝试定义⼀个不符合命名规范的魔术⽅法,它将不会被Python解释器识别为特殊⽅法
魔术⽅法的作⽤
- ⾃定义对象⾏为:通过定义魔术⽅法,你可以⾃定义对象如何响应Python的内置操作,⽐如打印、⽐较、算术运算等。
- 操作符重载:魔术⽅法允许你重载Python中的操作符,使它们以⾃定义的⽅式⼯作。例如,通过定义 add ⽅法,你可以改变对象相加的⾏为。
- 内置函数⽀持:许多Python内置函数,如 len() 、 iter() 、 next() 等,都是通过调⽤对象的
魔术⽅法来⼯作的。通过定义相应的魔术⽅法,你可以使对象与这些内置函数兼容。 - 增强代码可读性:使⽤魔术⽅法可以使代码更加直观和易于理解。通过定义适当的魔术⽅法,你可以让对象的⾏为更加符合开发者的预期。
init
触发机制:在实例化对象之后⽴即触发。
参数:⾄少有⼀个 self 接收当前对象,其他参数根据需要进⾏定义。
返回值:⽆
作⽤:初始化对象的成员。
**del**析构函数
python的垃圾回收机制,回收不是"⽴即"的, 由解释器在适当的时机,将垃圾对象占⽤的内存空间回收。
触发机制:当该类对象被销毁时, 当对象不再被使⽤时 ⾃动触发。
参数:⼀个 self 接收当前对象。
返回值:⽆。
作⽤:关闭或释放对象创建时资源。
getstate
在对象被序列化( pickle.dump() )时调⽤,返回⼀个表示对象状态的字典。默认返回 _dict
_ ,但可以⾃定义以控制序列化的内容(例如排除敏感数据或不可序列化的属性)。
setstate
在对象反序列化( pickle.load() )时调⽤,接收 getstate 返回的字典,⽤于恢复对象状
态。常⽤于重建默认 dict ⽆法处理的复杂对象。
reduce
定义对象如何被 pickle 模块序列化,返回⼀个元组 (callable, args, state)