Python入门核心知识盘点

发布时间:2026/9/24 15:29:44
Python入门核心知识盘点 ​概述计算机离不开硬件和软件硬件比如硬盘、CPU、显卡、内存等而软件则依赖各种计算机语言来实现。计算机语言的发展是从最基础的0和1打孔开始的也就是机器语言后来出现了汇编语言用助记符代替二进制指令更容易读写一些再后来发展出了像C和C这样的编译型语言——它们需要先用编译器把代码整个编译成机器码然后再运行。不过因为不同操作系统的机器码格式不同所以在Windows下编译的程序没法直接在Linux上运行。之后出现了解释型语言比如JavaScript。这类语言在运行时才逐行翻译并执行每次运行都要重新翻译。到了Java它结合了编译型和解释型的特点先用编译器把代码编译成一种中间格式叫字节码运行字节码时需要依赖对应操作系统的Java虚拟机JVM来执行。JVM相当于一个翻译官把字节码翻译成当前系统能理解的指令这样就实现了‘一次编译到处运行’。再到Python它其实也有编译和解释的过程但和Java不太一样。Python在执行时会先把代码编译成字节码然后由解释器解释执行。如果不导入外部模块生成的字节码通常只在内存里不会保存到硬盘也就是不‘落盘’这样修改代码后能快速重新编译。如果导入了外部模块Python会把对应模块的字节码保存成.pyc文件这样下次导入时可以直接用不需要重新编译。当然运行时这些字节码还是会加载到内存里执行的。正因为Python执行时明显依赖解释器所以大家一般把它归类为解释型语言。目前最常用的Python解释器是CPython也就是用C语言实现的那个官方版本。打印“Hello Python”的三种方式直接在命令行打印打开命令行CMD 或终端输入 python 进入交互模式然后输入print(Hello Python)通过脚本文件运行先创建一个后缀为 .py 的文件比如 hello.py用记事本或编辑器打开写上代码print(hello python)保存后在文件所在的文件夹里打开命令行输入python hello.py使用 PyCharm 运行打开 PyCharm创建一个新项目在项目里新建一个 Python 文件例如 hello.py输入同样的打印代码然后点击运行按钮或右键选择运行。执行后结果就会在 PyCharm 下方的控制台里显示出来。基础知识注释作用在代码中添加解释说明方便自己和其他人理解。计算机会自动忽略这些内容。分类单行注释使用## 这是一个单行注释print(Hello)# 注释也可以跟在代码后面多行注释使用三对引号单引号或双引号均可 这是一个多行注释 可以跨越多行。 通常用于函数或文件的整体说明。 print(World)注意严格来说三引号在Python中是定义“多行字符串”的语法。当这个字符串没有被赋值给任何变量或使用时它就相当于一个注释块。所以我们习惯上用它来进行多行注释。标识符标识符就是给变量、函数、类等起的名字。常见命名风格大驼峰命名法每个单词首字母大写。常用于类名。例如MyClassNameHttpRequestHandler小驼峰命名法第一个单词首字母小写后续单词首字母大写。在Python中不常用但在其他语言如Java中常见。例如myVariableNamecalculateTotalAmount蛇形命名法所有字母小写单词之间用下划线_连接。这是Python中变量和函数名的推荐风格。例如my_variable_namecalculate_total_amount命名规则可以由字母、数字、下划线组成。不能以数字开头例如2nd_place是无效的。区分大小写myVar和myvar是两个不同的标识符。避免使用Python的内置关键字如ifforclass等作为标识符。变量定义一个用于存储数据的“标签”或“名字”这个数据在程序运行期间可以被改变。语法变量名值例如age25name小明变量交换Python的语法糖交换两个变量的值在其他语言中通常需要一个临时变量# 传统方法ca ab bc但在Python中可以一行搞定非常简洁a,bb,a# Python 直接交换对变量的理解你可以把变量想象成一个贴纸标签而内存电脑的存储空间里有很多盒子内存地址存放着实际的值。a 10相当于把一张写着a的贴纸贴到了存放10这个数字的盒子上。a cccc相当于把a这张贴纸从原来的盒子撕下来贴到了存放cccc这个字符串的新盒子上。变量贴纸本身不“装”值它只是指向贴在那个值盒子所在的位置。常量定义在程序运行期间其值意图不被改变的量。提示Python语法上没有严格的常量机制主要依靠程序员的约定。约定通常使用全大写字母和下划线来命名常量以此提醒自己和他人不要修改它。PI3.14159MAX_CONNECTIONS100COMPANY_NAME我的公司进制以及原码、反码和补码进制进制就是以某个值为进位标准。十进制就是满 10 进 1二进制、八进制、十六进制等也是同样的道理。使用不同进制表示整数例如十进制数 35二进制以0b开头0b0010 0011八进制以0o开头0o43十六进制以0x开头0x23二进制转换成十进制以0b0101为例类比十进制比如数字 1234 可以表示为(1 × 10³) (2 × 10²) (3 × 10¹) (4 × 10⁰)权重从右往左分别是 10⁰、10¹、10²、10³。二进制也是类似的只是权重以 2 为底0b0101从右往左的权重是 2⁰、2¹、2²、2³因此(1 × 2⁰) (0 × 2¹) (1 × 2²) (0 × 2³) 1 0 4 0 5所以它对应的十进制数是 5。十进制转换成二进制以数字 11 为例找到刚好小于 11 的最大的 2 的次方这里是 82³。列出比它小的权重8、4、2、1。从高到低依次减11 − 8 3在权重 8 下写 1。3 4在权重 4 下写 0。3 − 2 1在权重 2 下写 1。1 − 1 0在权重 1 下写 1。得到二进制序列1011即0b1011。十六进制与十进制的转换十六进制 → 十进制如0x11权重为 16¹ 和 16⁰(1 × 16¹) (1 × 16⁰) 16 1 17。十进制 → 十六进制方法与十进制转二进制类似只是改为用 16 的权重进行减法或短除法计算。二进制和十六进制转换二进制 → 十六进制先向左补 0使总位数为 4 的倍数。例如0b110015 位补为0b0001 10018 位。每 4 位一组转换为十六进制0001→11001→9所以结果为0x19。十六进制 → 二进制将每位十六进制数展开为 4 位二进制再拼接。例如0x212→00101→0001拼接得到0b0010 0001。数据类型int 类型Python 中的int类型可以表示任意大小的整数包括负整数。在 CPython 解释器中小整数池数值在 -5 到 256具体范围可能随版本略有变化的整数会被预先加载到内存中。例如执行a 30时a会直接指向已存在的30所在的内存地址。大整数超出小整数池范围的整数只有在被使用时才会动态创建并缓存。但需要注意不同语句中的相同大整数如a 3000、b 3000可能指向不同的内存地址具体行为与 Python 版本及运行环境有关。相关函数id()获取对象的内存地址。type()获取变量的数据类型。isinstance(a, b)判断a是否是b类型或其子类的实例。例如若a是bool类型b是int类型会返回True因为bool是int的子类若两者都是int同样返回True否则返回False。float浮点类型a0.1b0.2cabprint(c)输出0.30000000000000004我们发现在进行浮点数计算时结果出现了微小的误差。这是由于二进制浮点数在计算机中表示时固有的精度限制并非“精度丢失”而是无法精确表示某些十进制小数。使用decimal模块中的Decimal类可以进行高精度的十进制数学运算从而避免此类问题fromdecimalimportDecimal aDecimal(0.1)# 注意这里传入的是字符串bDecimal(0.2)cabprint(c)# 输出0.3bool布尔类型aTruebFalseprint(a1)# Trueprint(b0)# Trueprint(ais1)# Falseprint(bis0)# FalseTrue和False在数值上分别等价于1和0因此使用比较值时会返回True。然而is运算符检查的是对象的身份标识即内存地址是否相同。True、False是独立的布尔对象而1和0是整数对象它们的身份不同因此is比较结果为False。string字符串初识反斜杠 \续行符在字符串中直接换行会导致语法错误可以使用反斜杠续行。print(hello \ world)# 输出hello world转义字符用于表示特殊字符或消除字符的特殊含义。print(It\s ok.)# 输出Its ok.print(Line1\nLine2)# 输出换行字符串驻留intern机制Python 会缓存不可变的字符串。在某些情况下如代码中直接出现的短字符串多个相同的字符串可能会指向同一个内存对象以节省内存。字符串缓冲池Python 在启动时会将部分常用的字符如 ASCII 字符预先缓存使用时直接引用以提高效率。数据类型转换自动类型转换隐式转换当不同类型的数据进行运算时Python 会自动向精度更高的类型转换。a1# intb2.1# floatcab# a 被隐式转换为 floatprint(c)# 输出3.1d5/2# 除法运算结果自动转为 floatprint(d)# 输出2.5强制类型转换显式转换使用内置函数进行类型转换。aint(1011,2)# 将二进制字符串转换为整数print(a)# 输出11字符的编码与解码计算机中存储和传输的数据本质是二进制。字符编码定义了字符与二进制数据之间的映射关系如 UTF-8、GBK。编码将字符转换为二进制数据str→bytes解码将二进制数据还原为字符bytes→str输入与输出输入使用input()函数获取用户输入返回的是字符串类型。nameinput(请输入你的名字)print(f你好{name}!)输出普通输出print()函数默认以换行符结尾可以通过end参数自定义。print(Hello,end! )# 输出Hello! 不换行print(World)格式化输出% 格式化传统方式name小明age18print(姓名%s年龄%d%(name,age))str.format()方法默认顺序print({} - {}.format(A,B))# A - B指定顺序print({1} - {0}.format(A,B))# B - A关键字参数print({name} - {age}.format(name小明,age18))数字格式化num1234.5678print({:*^15,.2f}.format(num))# ***1,234.57***# : 引导格式化说明# * 填充字符# ^ 居中对齐# 15 总宽度# , 千位分隔符# .2f 保留两位小数f-string推荐Python 3.6name小明print(f名字{name})num2.1print(f数值{num:*^10.2f})# ***2.10***