03Python核心基础

03Python核心基础

_

注:学习资料来源<尚硅谷>

视频:点击跳转

代码仓库:pythonStudy

无论你是刚接触编程的小白,还是正在复习基础的老手,这篇博客都能帮你系统梳理编程中最核心的底层概念。本文将以 Python 为主要示例语言(部分概念也适用于其他语言),带你从字面量出发,一路深入到进制转换和输入语句。准备好了吗?让我们开始吧!


1. 字面量

1.1 概述

字面量(Literal) 是指在代码中直接写出来的固定值,也就是“一眼就能看出是什么”的数据。比如你写下 100,它就是整数类型的字面量;写下 "Hello",它就是字符串类型的字面量。字面量是程序中最基本的数据表示方式。

1.2 写法

不同的数据类型有不同的字面量写法,下面列举最常见的几种:

类型

字面量示例

说明

整数(整型)

10, -5, 0

直接写数字,可带负号

浮点数

3.14, -0.5, 2.0

带小数点的数字

字符串

"Hello", 'World'

用单引号或双引号包裹的文本

布尔值

True, False

注意首字母大写(Python 特有)

空值

None

表示什么都没有

# 字面量在代码中的直接使用
print(100)          # 整数字面量
print(3.1415)       # 浮点数字面量
print("你好")       # 字符串字面量

2. 变量与常量

2.1 变量

变量 可以理解为给数据贴上的“标签”或“盒子”,用于存储程序运行过程中可以改变的值。

在 Python 中定义变量非常简单,不需要声明类型,直接写 变量名 = 值 即可。

# 定义变量
age = 18
name = "小明"
height = 1.75

print(name, "今年", age, "岁,身高", height, "米")

变量必须先赋值才能使用,否则会报 NameError。变量的值可以随时修改:

age = 18
print(age)   # 输出 18
age = 20     # 修改变量的值
print(age)   # 输出 20

2.2 标识符命名规则

变量名、函数名、类名等在编程中统称为 标识符。Python 的命名规则如下:

  1. 只能由字母(大小写均可)、数字和下划线 _ 组成

  2. 不能以数字开头1name ❌,name1 ✅)。

  3. 不能使用 Python 关键字(如 ifforwhileTrue 等)。

  4. 区分大小写Namename 是两个不同的变量)。

命名建议(行业惯例)

  • 变量名尽量 见名知意student_agesa 好得多。

  • 多个单词用下划线连接(蛇形命名法):user_nametotal_price

  • 类名使用大驼峰命名法:StudentInfoDataManager

2.3 常量

在编程中,常量 指的是值在程序运行过程中不应该被改变的量。遗憾的是,Python 本身并没有内置的常量定义机制,所有变量都是可变的。但程序员们约定俗成地使用 全大写字母 来命名常量,以此提醒自己和其他开发者:“不要修改这个值”。

# 常量命名约定:全大写
PI = 3.1415926
MAX_CONNECTIONS = 100
DATABASE_URL = "mysql://localhost:3306/mydb"

# 计算圆面积时,使用 PI 但不应修改它
radius = 5
area = PI * radius * radius

虽然 Python 解释器不会阻止你修改 PI 的值,但遵循约定能让代码更易维护。


3. 注释

3.1 概述

注释 是写在代码中,但不会被解释器/编译器执行的内容。它纯粹是写给程序员自己或同事看的“笔记”。

3.2 注释的作用

  • 解释复杂逻辑:为什么这段代码要这样写?

  • 标记待办事项# TODO: 需要增加异常处理

  • 调试代码:临时“禁用”某行代码,而不是直接删除它。

  • 生成文档:借助工具将注释提取成 API 文档。

3.3 单行注释

# 开头,该行后面的内容即为注释。

# 这是一个单行注释
print("Hello, World!")   # 这也是注释,跟在代码后面

3.4 多行注释

Python 中没有专门的多行注释语法(像 C 语言的 /* ... */)。我们通常使用 三个连续的单引号或双引号 组成的多行字符串来充当多行注释。只要这个字符串不被赋值给变量或用于运算,它实际上就被当作注释忽略了。

"""
这是一个多行注释
可以跨越多行
主要用于函数、类的文档说明
"""
def greet():
    '''这也是多行注释的另一种写法'''
    print("Hello")

3.5 文件编码注释

当文件中包含非 ASCII 字符(如中文)时,Python 2 需要显式声明文件编码,否则会报错。Python 3 默认编码是 UTF-8,因此通常不需要写,但如果为了兼容性,可以在文件第一行或第二行写上:

# -*- coding: utf-8 -*-

该注释必须严格放置在文件的最开头,前面不能有任何代码(除了 Shebang 行 #!/usr/bin/env python3)。


4. 字符编码

4.1 概述

计算机底层只认识 01,那么文字、符号是如何存储和显示的呢?这就需要 字符编码。简单说,编码就是给每个字符分配一个唯一的数字编号,并规定如何将这个数字存储为二进制。

4.2 常见编码方式

编码名称

特点

使用范围

ASCII

用 1 字节表示一个字符,只能表示 128 个英文符号、数字和控制字符

古董级,现代系统的基础子集

GB2312 / GBK

中文编码标准,用 2 字节表示汉字,兼容 ASCII

早期中文 Windows 系统

Unicode

为全世界所有字符分配统一编号,是字符集而非存储格式

现代软件开发的基石

UTF-8

Unicode 的一种灵活存储实现,变长编码(英文 1 字节,中文 3 字节)

互联网和 Python 3 默认编码

为什么了解编码很重要?

  • 读取别人发来的文件时如果出现乱码,通常是因为解码方式不对(比如用 GBK 去读 UTF-8 的文件)。

  • Python 3 的字符串默认是 Unicode,处理中文非常方便。

python

# Python 3 中字符串与字节的转换演示
text = "编程"
# 将字符串编码为 UTF-8 字节
byte_utf8 = text.encode("utf-8")   # b'\xe7\xbc\x96\xe7\xa8\x8b' (6个字节)
# 将 UTF-8 字节解码回字符串
print(byte_utf8.decode("utf-8"))   # "编程"

5. 数据类型

5.1 概述

数据类型定义了变量可以存储什么样的数据以及能对这些数据执行哪些操作。Python 是动态类型语言,变量不需要声明类型,但值本身是有明确类型的。

5.2 查看数据类型

使用内置函数 type() 可以轻松查看任何值的类型。

print(type(10))         # <class 'int'>
print(type(3.14))       # <class 'float'>
print(type("hello"))    # <class 'str'>
print(type(True))       # <class 'bool'>

5.3 整型(int

表示整数,没有小数部分。在 Python 3 中,整型 理论上是无限大的,只受限于计算机内存,再大的数字也不会溢出。

big_num = 123456789012345678901234567890
print(big_num * 2)  # 完全没问题

5.4 浮点型(float

表示带有小数点的数字。需要注意的是,浮点数在计算机内部是二进制存储的,并非所有十进制小数都能精确表示,会产生微小的舍入误差。

print(0.1 + 0.2)          # 输出 0.30000000000000004,而不是 0.3
print(round(0.1 + 0.2, 2))  # 处理精度问题的常用手段

5.5 字符串(str

字符串是用来表示文本的数据类型,是编程中使用频率最高的类型之一。

1️⃣ 字符的四种定义方式

Python 提供了灵活的字符串定义方式,方便处理内部包含引号的情况:

  1. 单引号'Hello'

  2. 双引号"Hello"

  3. 三单引号'''多行文本'''

  4. 三双引号"""多行文本"""

str1 = 'I am a student'
str2 = "他说:'你好!'"      # 双引号内部可以自由使用单引号
str3 = '''第一行
第二行
第三行'''                   # 保留换行格式

2️⃣ 字符串的格式化输出

Python 提供了多种格式化字符串的方法,最现代、推荐使用的是 f-string(Python 3.6+)。

name = "李华"
age = 20
score = 95.5

# 1. % 格式化(旧式,C语言风格)
print("我是%s,今年%d岁,考了%.1f分" % (name, age, score))

# 2. format() 方法
print("我是{},今年{}岁,考了{:.1f}分".format(name, age, score))

# 3. f-string(最简洁、最快)
print(f"我是{name},今年{age}岁,考了{score:.1f}分")

3️⃣ 占位符精度控制

% 格式化和 format() 中,可以用格式说明符控制精度。

符号

含义

示例

输出

%d

整数

"%d" % 3.14

3

%f

浮点数

"%.2f" % 3.1415

3.14

%s

字符串

"%s" % "abc"

abc

在 f-string 中,格式说明符写在变量后面的冒号之后:

pi = 3.1415926
print(f"保留两位小数:{pi:.2f}")   # 3.14
print(f"补齐8位宽度:{pi:8.2f}")  # "    3.14"
print(f"百分比显示:{0.25:.1%}")  # 25.0%

4️⃣ 转义字符

有些特殊字符无法直接键入字符串(如换行符、制表符),或者想输入引号本身,就需要使用转义字符 \

转义序列

含义

\n

换行

\t

水平制表符(Tab)

\\

反斜杠本身

\'

单引号

\"

双引号

print("第一行\n第二行")          # 换行输出
print("文件路径:C:\\Users\\Admin") # 正确显示反斜杠

如果希望字符串内的 \ 不作为转义符,可以使用 原始字符串(在引号前加 r):

path = r"C:\new_folder\test.txt"
print(path)   # 输出 C:\new_folder\test.txt,\n 不会被转义为换行

6. 数据类型转换

6.1 概述

数据类型转换是将一种类型的数据变为另一种类型的过程。分为 隐式转换(自动发生)和 显式转换(程序员手动调用函数)。

6.2 为什么要数据类型转换

  • 拼接字符串与数字:不能直接用 + 连接字符串和整数。

  • 用户输入处理input() 函数返回的都是字符串,做数学运算前需要转成数字。

  • 精确控制输出格式

6.3 具体转换方式

函数

作用

示例

结果

int(x)

转为整数

int("123")

123

float(x)

转为浮点数

float("3.14")

3.14

str(x)

转为字符串

str(100)

"100"

bool(x)

转为布尔值

bool(0)

False

注意事项

  • int("abc") 会抛出 ValueError,因为无法将字母转为数字。

  • int(3.99) 会直接截断小数部分,结果为 3(不是四舍五入)。

  • 任何非空字符串、非零数字转为布尔值均为 True

# 常见场景:计算两个输入数字的和
num1_str = input("请输入第一个数字:")   # 返回 "10"
num2_str = input("请输入第二个数字:")   # 返回 "20"
# 如果不转换,相加结果是字符串拼接 "1020"
sum_result = int(num1_str) + int(num2_str)
print("和为:", sum_result)

7. 运算符

7.1 算数运算符

用于数学计算。

运算符

描述

示例 (a=10, b=3)

结果

+

a + b

13

-

a - b

7

*

a * b

30

/

除(结果总为浮点数)

a / b

3.333...

//

整除(向下取整)

a // b

3

%

取模(求余数)

a % b

1

**

幂运算

a ** b

1000

7.2 赋值运算符

将右侧的值赋给左侧变量,可与算术运算结合。

运算符

等价写法

=

x = 5

+=

x = x + 5

-=

x = x - 5

*=

x = x * 5

/=

x = x / 5

7.3 比较运算符

比较两个值,返回布尔值(True / False)。

运算符

含义

==

等于(注意是两个等号)

!=

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

7.4 布尔类型

布尔类型只有两个值:True(真)和 False(假)。它们是 int 的子类,在计算中 True 相当于 1False 相当于 0

python

print(True + 1)   # 输出 2
print(False * 5)  # 输出 0

7.5 逻辑运算符

用于组合多个条件判断。

运算符

逻辑含义

说明

and

两边都为 True 结果才为 True

or

至少一边为 True 结果就为 True

not

取反

python

age = 25
is_student = True
# 判断是否是年轻学生
if age < 30 and is_student:
    print("享受学生优惠")

# 逻辑运算的短路特性:and 左边为 False 时不计算右边,or 左边为 True 时不计算右边

8. 进制

8.1 概述

人类习惯十进制,但计算机底层是二进制。编程中有时需要直接使用二进制、八进制、十六进制。

8.2 代码中如何表示不同进制

Python 使用特定前缀区分进制:

进制

前缀

示例

十进制值

二进制

0b0B

0b1010

10

八进制

0o0O

0o12

10

十六进制

0x0X

0xA

10

print(0b1010)    # 10
print(0o12)      # 10
print(0xA)       # 10

8.3 不同进制之间的转换

使用内置函数进行十进制与其他进制的互转:

num = 42

# 十进制 -> 其他进制(返回字符串)
bin_str = bin(num)   # '0b101010'
oct_str = oct(num)   # '0o52'
hex_str = hex(num)   # '0x2a'

# 其他进制字符串 -> 十进制
print(int('101010', 2))   # 42,指定字符串为二进制
print(int('52', 8))       # 42,指定为八进制
print(int('2a', 16))      # 42,指定为十六进制

9. 输入语句

在 Python 中,使用 input() 函数接收用户的键盘输入。程序执行到 input() 时会暂停,等待用户输入一行文本并按回车,然后将用户输入的内容 作为字符串返回

name = input("请输入您的姓名:")
print(f"您好,{name}!")

# 重要:接收数字输入时需要类型转换
age_str = input("请输入您的年龄:")
age = int(age_str)  # 转换为整型才能做加减运算
print(f"明年您就 {age + 1} 岁了。")

输入语句的注意事项

  • input() 的参数是提示字符串,可以留空。

  • 返回值永远是 str 类型,数学计算前务必转换。

  • 若转换失败(如用户输入 abc 却用 int() 转换),程序会崩溃。实际开发中需配合异常处理(try...except)提高健壮性。


总结

恭喜你!至此你已经完整地学习了编程语言中最基础但也最重要的概念体系:从字面量的表示,到变量的存储,再到数据类型、运算符和输入输出。这些知识是构建任何复杂程序的基石。建议你打开编辑器,亲手敲一遍文中的代码示例,修改数值、观察变化,这是掌握编程的最快途径。

在下一篇博客中,我们将继续深入探讨 流程控制ifwhilefor),带你写出真正具有逻辑判断和循环能力的程序。敬请期待!

如果本文对你有帮助,欢迎点赞、收藏或分享给正在学习编程的朋友。有任何疑问也可以在评论区留言,我们一起交流进步!

02初识Python 2026-04-22

评论区