Python基础语法
Python基础语法
1、python基础概念






2、python虚拟机

1、虚拟机设计降低了编程的难度。
2、增强了系统可移植性。
3、自动的内容管理,防止资源耗费。
4、解耦了程序与操作系统的依赖。
python虚拟机提供了所有python代码的执行环境,直接通过python虚拟机解释运行,极大降低了开发的难度。

所有的虚拟机代码的转换的过程完全是由python自己完成的,用户还是按照传统的编程习惯进行代码开发,用户感觉不到虚拟机的存在,但是代码确实可以在虚拟机代码进行执行。

3、搭建python开发环境

python虚拟机下载站点:https://www.python.org/下载amd64版本的exe文件,双击安装。


python文档:https://docs.python.org/3/


python安装完python开发环境之后,会自动在本机的系统属性之中去添加python的执行程序路径,但是如果要没有添加上,也可以进行手工添加

win+R>输入CMD>输入python进行验证是否安装成功!


4、python的编程起步

5、PyCharm开发工具
破解方法:https://ai.feishu.cn/wiki/TT0iwvkw8iwvNyklNZSc70Cenl0
工具下载链接:https://www.jetbrains.com/pycharm/download/?section=windows(有专业版和社区版,社区版是免费试用。)








6、python基础语法
- python的注释

- 标识符与关键字
只能由大小写字母、下划线、数字所组成,不能以数字开头,不能试用python关键字。


- python标识符:

- 获取python的关键字
"""
注释方便自己 也方便别人!不写注释的代码是不合格的,不能验收!
# 单行注释
''' ''' 多行注释
"""
import keyword
if __name__ == '__main__':
print("hello word!")
# 获取python所有的关键字
print(keyword.kwlist)
- 变量与常量



python中的全部变量都保存在了一个命名空间之中,而后命名空间存储一个变量信息,同时变量具体定义是保存在栈内存,而后栈内存指向堆内存(存放具体的常量值)。所有的常量只保存在堆内存中,所有的变量只保存了一个堆内存的引用地址而已。



-
变量删除
![image-20251220221815704]()
在执行del之前,num变量是可以直接使用的,并且可以通过变量找到其对应的常量的内容(常量是保存在堆内存之中的),而在使用了"del num"变量删除之后,发现num变量无法使用了,直接在执行的时候出现了NameError(名称错误,没有找到指定的名称变量),需要注意的一个问题是,变量使用del之后,可能并不是真正删除操作,因为内存的释放还是需要由python虚拟机进行调度。

变量名和常量值的内存地址是一样,可想而知有一个常量池,当变量被删除后,实际上仅仅是通过命名空间将此变量的信息删除了,但是此变量所对应的堆内存地址可能未必会及时删除。
情况一:该堆内存地址还存在有其他变量的引用,那么此内存是不会被回收。
情况二:该堆内存的地址已经没有任何变量的引用,则此部分内存将成为无用空间,随后将等待被删除(python虚拟机)。



- python的数据类型





复数


(15+6j)
(30+12j)
布尔类型 True和 False


None类型

None赋值的变量可以直接拿来使用,而Del删除的变量不能拿来使用。


- 数学运算符


- is/not is 判断是不是引用传递(同一内存的指向),返回布尔类型。

- 关系运算

所有的关系运算符返回的都是布尔类型。

- 逻辑运算符

与逻辑: 若干个布尔判断的条件返回的内容都是True的时候,最终结果才是True,有一个是False结果就是False;
或逻辑:若干个布尔条件的返回内容只要一个是True,最终结果就是True,全部是False的时候结果就是False;
非逻辑:是一个求反的过程,将True变false,将false变true。



- 位运算

- 移位运算

7、序列结构




8、字符串









- python预结构处理








9、列表(list)

列表中可以定义字符串除外,也可以进行其他子列表的存储。由于列表中定义的序列没有数据类型的规定,尽量在列表中定义相同数据类型的序列对象。



- copy
拷贝列表对象相当于在复制新的列表开辟出一个新的堆内存用于使用。






10、 元组
元组中如果只有一个元素,会自动转型成该元素的数据类型,所以一般定义元组元素时要后面追加一个逗号。
元组可以通过下标取值,且里面的元素定义后不可更改。可以保存列表和元组两种类型。

-
将列表转为元组结构
![image-20260102153015061]()
-
将字符串转为元组结构

- 将序列结构转为列表结构

- 列表和元组有什么不同?
元组是开辟一片连续存储空间,用于存储数据,查询效率比较高,而列表是非连续存储空间,查询效率要低一点点。


11、字典





- 字段内置函数

- 安全的获取字典中的数据

- 相同的key值会被覆盖

- 字段数据的删除操作

- 判断某一个key是否存在

- items函数功能

- 原始数据删除


- 字典copy(浅拷贝,只拷贝地址)



- 深拷贝(把内存和地址都拷贝一遍)
![image-20260113211637774]()
12、序列统计函数


- 重复次数的统计

- 没有重复的数据分析

- 字典数据的运算

13、键盘数据的输入处理




14、数据类型的转换




15、数据格式化






16、字符串格式化



- format格式化






17、程序逻辑结构





18、循环语句





19、for循环





20、中断循环



21、函数



22、函数参数传递










23、内部函数


- 闭包函数

24、变量作用域
每个函数都有的内部的变量作用域,如果在函数外部定义相同的变量,函数内部变量不会受影响,必须在函数内部定义nonlocal和globals






25、lambda表达式

lambda表达式的最终目的是简化代码量,结构定义上的简化




26、代码动态解析




27、生成器





28、面向对象












29、属性封装






- 对于类中结构性要求较强的必须设置插槽,防止被无限扩充属
![image-20260121232707612]()
30、对象构造和析构

如果没有使用构造方法,一样可以实例化,其中继承父类的初始化方法,所以一个类中一定会有构造方法的提供。
类的初始化步骤:1、开辟堆内存。2、实例化构造方法。3、成员属性赋值


- 析构操作

31、类属性






32、内部类
每个内部类都是一个独立的结构,只因为位置不同,调用方式不同。

33、继承



- 多继承

34、继承构造方法






35、获取类继承信息




36、方法覆写


37、对象的多态性





38、Object父类



- MRO顺序错误代码:

由于广度优先算法导致的X和Y执行的父类对象不同,然后Z去继承X和Y导致父类代码执行混乱不堪,需要修改Y类的继承父类的对象顺序成XY继承父类的方法应该对齐。


39、哈希编码



40、获取对象信息





41、对象格式化







42、对象比较



43、数据转换操作




44、数学计算支持




45、可调用对象




46、集合迭代支持




47、装饰器
- 代理模式




- 装饰器




48、属性访问支持


49、静态方法





- 工厂模式



50、metaclass






51、classmethod ![image-20260128230846487]()
- 获取python调用源代码

- 定义抽象类和抽象方法(一定要实现抽象方法)

- 判断是否覆写属于正确的子类


52、异常捕获和处理



- 断言处理


- 处理多个异常





- 抛出异常







53、with关键字



54、模块的定义与使用





__init__.py文件定义父包可自动导入的模块

- 要使用父包导入以外的模块,需要使用from com.yootk.data import *,不能使用from com.yootk import *。

- python禅道

55、数学模块



56、随机数


57、偏函数



58、枚举



59、双端队列





60、set集合




61、正则表达式





62、日期时间




63、pip模块管理工具



- 换镜像




63、虚拟环境






64、模块打包







65、Pypi项目发布










本文来自博客园,作者:戴莫先生Study平台,转载请注明原文链接:https://www.cnblogs.com/smallzengstudy/p/19550842






浙公网安备 33010602011771号