Python作为当下最热门的编程语言之一,凭借其简洁优雅的语法和强大的生态,成为无数开发者入门编程的首选。无论你是想转向数据科学、Web开发,还是自动化运维,扎实的基础语法都是不可或缺的基石。本文将系统梳理Python的核心基础知识,帮你快速建立完整的知识框架。

注释与变量:代码的“说明书”和“容器”

注释是代码的隐形助手,主要用于解释逻辑或临时禁用代码段,极大提升可读性和调试效率。在Python中,单行注释使用#符号,多行注释则借助三引号(单引号或双引号均可)实现。

# print("Hello world")
"""
print("Hello world")
print("Hello world")
"""

变量是存放数据的“容器”。与C++或Java不同,Python无需显式声明变量类型,解释器会根据赋值自动推断数据类型。例如:name = 'Alice',Python会将其识别为字符串类型。

num = 2 #单个变量创建
num4 = num5 = num = 4  # 多个变量对应同一个值
num1,num2,num3 = 1,2,3 # 多个变量对应不同值
type(num) #使用python内置函数type()获取变量的数据类型

常量在逻辑上表示一经赋值不再改变的量,Python中通常用全大写变量名来约定常量,如PI = 3.14。

PI = 3.14

️ 标识符命名:规范与艺术

标识符是变量、函数、类等的名字,必须遵循以下规则:

  • 由字母(a-z, A-Z)、数字(0-9)和下划线(_)组成,且不能以数字开头。
  • 严格区分大小写,myVar和myvar是两个不同的变量。
  • 不能使用Python的保留关键字(如if、for、class等)。
#查看关键字
print(keyword.kwlist)
#输出
“”“
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await',
'break', 'class', 'continue', 'def', 'del', 'elif', 'else',
'except', 'finally', 'for', 'from', 'global', 'if', 'import',
'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise',
'return', 'try', 'while', 'with', 'yield']
”“”
关键字
逻辑与运算符
用于创建别名,如
断言,用于调试检查
标记异步函数或异步上下文管理器
暂停异步函数执行,等待可等待对象完成
跳出当前循环
定义类
跳过当前循环的剩余部分,进入下一次迭代
定义函数
删除变量或对象的属性/元素
条件判断中的“否则如果”分支
条件判断中的“否则”分支,也可与循环搭配
捕获异常
布尔假值
异常处理中无论是否发生异常都会执行的块
用于循环迭代序列或其他可迭代对象
从模块中导入指定的部分
声明变量为全局变量(在函数内修改全局变量)
条件判断
导入模块或模块中的对象
成员关系测试(如 ),也用于循环
身份运算符,比较两个对象是否同一
创建匿名函数
表示空值或无值的特殊对象
声明变量为非局部变量(用于嵌套函数)
逻辑非运算符
逻辑或运算符
空操作占位符,通常用于语法上需要语句但无实际代码处
主动抛出异常
从函数中返回值并退出函数
布尔真值
异常处理块的开始
条件循环,当条件为真时重复执行
上下文管理器,简化资源管理
生成器函数中返回中间值,暂停执行并保留状态

推荐使用蛇形命名法(如user_name)或驼峰命名法(如userName),常量则采用全大写加下划线(如MAX_SIZE)。

# 合法的标识符
name = "张三"
student_age = 18  # 包含下划线
calculateSum = 100  # 驼峰写法(通常用于变量较少见,更多用于函数/方法)
MAX_VALUE = 1000  # 常量
# 不合法的标识符(如果执行会报错)
# 123abc = "test"  # 语法错误:不能以数字开头
# if = 10          # 语法错误:if 是关键字,不能作为标识符

变量的值可以在程序中随时修改,Python始终记录最新值。

num1 = 2
print(num1)#2
num1 = 3
print(num1)#3
#交换两个变量的值
#version1
num3 = 2
num4 = 3
temp = 0 #初始化临时变量,用于暂存数据
temp = num3 #将num3的值保存到临时变量temp中
num3 = num4 #将num4的值赋给num3,此时num3的值为3
num4 = temp #将temp中保存的原num3的值赋给num4,实现两个变量值的交换
print(num1 ,num2) #3 2
#version2
num5 = 6
num6 = 7
print(num5,num6) #6 7
num5, num6 = num6, num5 #利用Python的多重赋值特性交换变量值
print(num5,num6) #7 6

进制转换:计算机的“语言”

计算机底层只识别二进制(0和1),但人类更习惯十进制。Python中常见的进制包括:

  • 二进制(0b):0和1,逢2进1。
  • 八进制(0o):0~7,逢8进1。
  • 十进制:0~9,逢10进1。
  • 十六进制(0x):0~9和A~F,逢16进1。
#不同进制的数字通过在前面添加特定前缀(0b、0o、0x)来表示。
num_binary = 0b1100 #二进制12
num_oct = 0o14 #八进制12
num_dec = 12 #十进制12
num_hex = 0xc #十六进制12
#Python提供了bin()、oct()、hex() 函数用于将整数转换为二进制、八进制和十六进制表示。
new_num1 = bin(num_dec)
new_num2 = oct(num_dec)
new_num3 = hex(num_dec)

✅ 十进制转二进制:不断除以2,记录余数,逆序排列。

在这里插入图片描述

✅ 二进制转十进制:从右向左,每位乘以2的位数次幂,求和。

在这里插入图片描述

✅ 二进制转十六进制:每四位一组,转换为对应十六进制数。

在这里插入图片描述

✅ 十六进制转十进制:每位乘以16的位数次幂,求和。

在这里插入图片描述

✅ 十六进制转二进制:每位转换为4位二进制数。

在这里插入图片描述

数据类型:Python的“万物皆对象”

Python变量本身无类型,其类型由引用的对象决定。常见数据类型分为六种:

数据类型
数字 (Number)包括整数 ()、浮点数 ()、复数 () 、布尔 () 等,用于数值计算
字符串 (String)由引号包围的字符序列,用于存储和操作文本
列表 (List)有序的容器,可存放任意类型的元素,使用方括号 定义
元组 (Tuple)有序的容器,使用圆括号 定义,一旦创建不可修改
字典 (Dictionary)无序的键值对集合,键唯一,使用花括号 定义,用于快速查找
集合 (Set)无序、不重复的元素集合,使用花括号 或 创建,支持交集、并集等数学运算

根据是否可变,可分为可变类型(如列表、字典)和不可变类型(如数字、字符串、元组)。

类型
可变数据List(列表)、Dictionary(字典)、Set(集合)
不可变数据Number(数字)、String(字符串)、Tuple(元祖)

⚠️ 对不可变对象“修改”实际上是创建新对象,而可变对象则原地操作。

#使用python内置函数id()可查看变量num所指向对象的内存地址
#不可变数据
num = 1
print(id(num))#4362414520
num = 2
print(id(num))#4362414552
#可变数据
lst = [1,2,3]
print(id(lst))#4307695488
lst.append(4)
print(id(lst))#4307695488

整型(int)

支持下划线分隔大数,提高可读性:1_000_000。

#存储这种数时,python会忽略其中的下划线,这种表示法适用于整数和浮点数,但只有python3.6及以上版本支持
num1 = 1_000_000_000_000
print(num1) #1000000000000

使用type()获取确切类型,isinstance()判断类型归属。

num1 = True
num2 = 1.6
type(num1) #bool
type(num2) #float
isinstance(num1,int) #True,python3中,bool是int的子类

小整数池:Python缓存[-5, 256]范围内的整数,避免重复创建。

浮点数(float)

浮点数计算可能存在微小误差,可用decimal模块解决。

num1 = 0.1
num2 = 0.2
print(num1+num2) #0.30000000000000004
#导入Decimal解决误差问题
from decimal import Decimal
num3 = Decimal('0.1')
num4 = Decimal('0.2')
print(num3+num4) #0.3
#科学计数法表示浮点数
num5 = 1.3e7
print(num5) #13000000.0

布尔类型(bool)

只有True和False,是int的子类,可参与数学运算。True == 1,False == 0。

print	(True == 1) #True
print(False == 0) #True
print(True is 1) #False
print(True is 0) #False
#在python中,能够解释为假的值不只有False,还有:None、0、0.0、False,所有的空容器

字符串(str)

字符串是不可变序列,支持转义字符(如\n换行)。

转义字符说明
\在末尾作为续行符
\b退格
\n换行
\t横向制表符
\r回车,回到行首

intern机制:相同的不含空格的字符串默认共享内存,节省资源。

str1 ,str2 = "hello","hello"
result = id(str1)==id(str2)
print(result)
#true

单个ASCII字符也会被缓存到字符串缓冲池中。

[AFFILIATE_SLOT_1]

类型转换与输入输出

隐式转换:如int与float运算时,自动提升为float。

num1 , num2 = 3,3.6
print(type(num1+num2))#float

两个int相除结果也是float。

num1, num2 = 4,2
print(type(num1/num2))#float

⚠️ 数字与字符串不能直接相加,会引发TypeError。

num1,str1 = 4,'hello'
print(num1+str1)
#运行后会报:TypeError: unsupported operand type(s) for +: 'int' and 'str'

强制转换:使用内置函数如int()、str()、float()等。

函数说明示例输出
int(x [,base])将 x 转换为整数,字符串可指定进制int(“101”, 2)5
int(x [,base])将浮点数转整数,做截断操作无四舍五入int(3.7)3
float(x)转换为浮点数float(5)5.0
float(x)转换字符串为浮点数float(“3.14”)3.14
complex(real[,imag])创建复数complex(2,3)(2+3j)
complex(real[,imag])只指定实部complex(5)(5+0j)
str(x)转换为字符串str(123)123
repr(x)转换为字符串,可保留特殊字符repr(‘Hello\nNancy’)Hello\nNancy
eval(x)执行字符串表达式eval(“3 + 5 * 2”)13
ord(x)字符转 ASCII/Unicode 整数ord(‘A’)65
chr(x)整数转字符chr(65)A
tuple(s)转换序列为元组tuple([1,2,3])(1,2,3)
list(s)转换序列为列表list((4,5,6))[4,5,6]
set(s)转换为集合(去重、无序)set([1,2,2,3,3,3]){1,2,3}

编码与解码:encode()将字符串转为字节,decode()则相反,需指定编码(如utf-8)。

str = "hell0,Nancy,中国"
str_t=str.encode('utf-8') #使用utf-8编码
print(str_t) #b'Hello,Nancy\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c'
pring(type(str_t)) #bytes
print(str_t.decode('utf-8')) #Hello,Nancy,世界

输入:input()接收用户输入,返回字符串。

getIput = input("请输入你的年龄:")
print(type(getIput)) #str

输出:print()可输出多个值,支持end参数自定义结束符。

print("Hello,","world",end="\t") #Hello,world	Nancy
print("Nancy")

格式化输出有三种方式:

  • %占位符:%s、%d等。
  • str.format():支持位置、参数名、数字格式化。
  • f-string:最推荐,简洁高效。
num1 = 3
num2 = 3.656
print("num1=%d,num2=%.2f"%(num1,num2)) #num1=3,num2=3.66
num1,num2,num3= 1,2,3
print("num1={},num2={},num3={}".format(num1,num2,num3)) #num=1,num2=2,num3=3
num1,num2,num3= 1,2,3
print("num1={2},num2={1},num3={0}".format(num1,num2,num3)) #num=3,num2=2,num3=1
num1,num2,num3= 1,2,3
print("num1={a},num2={c},num3={b}".format(a=num1,b=num2,c=num3)) #num=1,num2=3,num3=2
num = 3.1415
num_c = "{:*^20,.2f}".format(num)
print(num_c) #********3.14********
print ("{0} 对应的位置是 {0}".format("hello"))   #hello对应的位置是 hello
print ("{{0}}".format("hello")) #{0}
print (f"{{0}}"  #{0}
num1 = 3
num2 = 3.14
print(f"num1={num1},num2={num2}") #num1=3,num2=3.14

⚙️ 运算符:计算的“工具箱”

Python提供丰富的运算符:

  • 算术运算符:+、-、*、/、//、%、**。
  • 赋值运算符:=、+=、-=等。
  • 比较运算符:==、!=、>、<等。字符串比较基于ASCII码。
  • 逻辑运算符:and、or、not。
  • 位运算符:&、|、^、~、<<、>>,以补码形式计算。
  • 成员运算符:in、not in。
运算符说明实例
+加a + b
-减、或取负a - b、-a
*乘a * b
/除a / b
//整除,除后向下取整a // b
%模,返回除法的余数a % b
**幂a ** b
#向下取整数
print(6//4) # 1
print(-6//4) # -2
运算符说明实例
=赋值a = 1
+=加法赋值a += 2,等同于a = a + 2
-=减法赋值a -= 2,等同于a = a -
*=乘法赋值a *= 2,等同于a = a * 2
/=除法赋值a /= 2,等同于a = a / 2
//=整除赋值a //= 2,等同于a = a // 2
%模赋值a %= 2,等同于a = a % 2
**=幂赋值a = 2,等同于a = a ** 2
:=海象运算符,在表达式中同时进行赋值和返回赋值的值。Python3.8 版本新增print((num2 := 3**2) > 3)
运算符说明实例
==相等,比较两者的值a == b
!=不相等a != b
>大于a > b
<小于a < b
>=大于等于a >= b
<=小于等于a <= b
运算符说明
and与,x and y,若x为False返回x的值,否则返回y的值
or或,x or y,若x为True返回x的值,否则返回y的值
not非,not x,若x为True返回False,若x为False返回True
运算符说明实例
&按位与(全真则1)a & b
|按位或(有1则1)a | b
^按位异或(相同为0,不同为1)a ^ b
~按位取反(取反后采用补码表示)~x=-x-1~ a
<<按位左移(左移,低位补0,相当于乘以2的n次方)a << 1
>>按位右移(右移,高位补符号位正数补0,负数补1,相当于除以2的n次方取整)负数右移动向下取整a >> 1
正数7负数-7
原码符号位加上真值的绝对值00000111符号位加上真值的绝对值 10000111
反码等于原码00000111原码符号位不变,其余位取反 11111000
补码等于原码00000111反码加1>111111001
在这里插入图片描述在这里插入图片描述在这里插入图片描述
运算符说明实例
is判断两个标识符是不是引用自相同对象a is b,类似id(a) == id(b)。如果引用的是同一个对象则返回True,否则返回False
is not判断两个标识符是不是引用自不同对象a is not b,类似id(a) != id(b)。如果引用的不是同一个对象则返回True,否则返回False

使用小括号()可以提升优先级,让表达式更清晰。

[AFFILIATE_SLOT_2]

结语

本文从注释、变量、进制转换、数据类型到运算符,系统梳理了Python的核心基础。掌握这些知识后,你将能轻松阅读和编写简单的Python程序。与Java、C++、Go、TypeScript等语言相比,Python的语法更接近自然语言,学习曲线更为平缓。建议多动手练习,将理论转化为肌肉记忆。下一篇文章,我们将深入探讨Python的流程控制与函数,敬请期待!

andasimport ... as ...assertasyncawaitbreakclasscontinuedefdelelifelseexceptFalsefinallyforfromglobalifimportinx in listforislambdaNonenonlocalnotorpassraisereturnTruetrywhilewithyieldintfloatcomplexbool[](){}{}set()