Skip to content

Python 编程基础 ​

前面已经准备好了 Python 和 PyCharm。接下来,我们要编写一个简单的学习信息卡:让用户输入姓名和正在学习的课程,再把信息显示出来。

要完成这个小程序,需要先掌握 5 个基础知识:

  1. 使用 print() 输出内容
  2. 使用变量保存数据
  3. 使用 input() 接收输入
  4. 使用注释说明代码
  5. 使用统一的规则命名和排版

输入、输出与变量 ​

任何软件系统本质上都是一台“数据加工机”:接收外部数据输入(Input),在计算机内部进行运算和暂存(Process),最终向用户呈现处理结果(Output)。这就是经典的 IPO 模型(Input-Process-Output)。

输入、计算机与输出关系图(IPO 架构模型)

在 Python 编程中,这三大核心环节分别对应了最基础的语法元件:input() 负责捕获输入,变量与内存负责加工暂存,print() 负责输出结果。

程序处理完数据后,通常需要把结果显示出来。Python 使用 print() 输出内容。

新建 coding_basics.py,输入下面的代码:

python
print("欢迎学习 Python 核心编程")

运行后会看到:

text
欢迎学习 Python 核心编程

引号中的内容会原样显示。字符串的具体写法会在后面的章节中讲解,这里先会用即可。

一次输出多个内容

print() 可以一次接收多个内容,内容之间默认使用空格分隔:

python
print("课程:", "Python 核心编程")
print("阶段:", "编程基础")

运行结果:

text
课程:Python 核心编程
阶段:编程基础

设置分隔符和结束内容

通过 sep 可以修改多个内容之间的分隔符:

python
print("2026", "09", "11", sep="-")

运行结果:

text
2026-09-11

print() 默认在输出结束后换行。通过 end 可以修改结束内容:

python
print("正在学习", end=":")
print("Python")

运行结果:

text
正在学习:Python

print() 的完整形式如下:

python
print(*objects, sep=" ", end="\n", file=None, flush=False)
参数作用
objects要输出的一个或多个内容
sep多个内容之间的分隔符,默认是空格
end输出结束时添加的内容,默认是换行符 \n
file输出位置,默认是当前终端
flush是否立即刷新输出,默认是 False

print 函数参数效果对比

当前阶段重点掌握 objects、sep 和 end。另外两个参数以后用到时再学习。

变量与赋值 ​

如果同一个内容会被多次使用,可以先给它起一个名字。这个名字就是变量。

python
course_name = "Python 核心编程"

print(course_name)
print("正在学习:", course_name)

= 表示赋值,可以读作“把右边的值交给左边的变量”:

text
变量名 = 值

上面的代码把文本 Python 核心编程 赋值给 course_name。后面写 course_name,就可以取得这个值。

赋值不是判断相等

这里的 = 表示赋值。判断两个值是否相等会使用 ==,后面的运算符章节会专门讲解。

修改变量的值

变量保存的值可以重新赋值:

python
study_status = "准备学习"
print(study_status)

study_status = "正在学习"
print(study_status)

运行结果:

text
准备学习
正在学习

代码从上到下执行。第二次赋值后,study_status 对应的是新值。

变量赋值、重新赋值和使用顺序

先赋值,再使用

变量必须先赋值才能使用。下面的代码会出现 NameError:

python
print(student_name)
student_name = "小明"

Python 执行第一行时,还不知道 student_name 是什么。

input () 输入 ​

固定输出只能显示程序提前写好的内容。如果希望不同学生输入自己的姓名,就要使用 input()。

Python 输入与输出的处理流程

input ()、变量与 print () 的数据流

input() 会先显示提示文字,然后暂停程序,等待用户输入。用户按下回车后,程序才会继续执行。

python
student_name = input("请输入你的姓名:")
print("你好,", student_name)

一次运行过程可能是:

text
请输入你的姓名:小明
你好,小明

这段代码分为两步:

  1. input() 接收用户输入,并把结果赋值给 student_name
  2. print() 读取变量中的内容并输出

input () 得到的是字符串

无论用户输入字母还是数字,input() 返回的都是字符串,也就是 str。

python
content = input("请输入内容:")
print(type(content))

输入 123,仍然会看到:

text
<class 'str'>

input 函数返回字符串

字符串和数据类型转换会在后续章节中继续讲解。

代码注释 ​

注释是写给人看的说明,Python 不会把它当成程序执行。

单行注释

Python 注释以 # 开头,从 # 到这一行末尾的内容都是注释。

python
# 接收学生姓名
student_name = input("请输入你的姓名:")

# 显示欢迎信息
print("你好,", student_name)

按照常用规范,# 后面留一个空格,再写注释内容。

行尾注释

注释也可以写在代码后面:

python
course_name = "Python 核心编程"  # 当前课程名称

代码和行尾注释之间建议至少保留两个空格。行尾注释不要写得太长,也不要重复代码已经表达清楚的内容。

多行说明

Python 没有单独的多行注释符号。需要写多行注释时,每一行都使用 #:

python
# 学习信息卡包含姓名和课程名称。
# 后面还会继续增加学习阶段和完成进度。
student_name = "小明"
course_name = "Python 核心编程"

有时会看到使用三个引号包围多行文字:

python
"""学习信息卡模块。

用于记录和显示学生的学习信息。
"""

它本质上是一个多行字符串。放在模块、函数或类的特定位置时,可以作为文档字符串,也叫 docstring。当前阶段不要把三个引号简单理解为“多行注释”。

注释要解释原因和目的

代码已经很清楚时,不需要逐行翻译。修改代码后,也要同步更新相关注释,避免说明和实际代码不一致。

Python 代码注释语法规范与运行机制

标识符与命名规范 ​

标识符规则 ​

变量、函数和类等由开发者起的名字,统称为标识符。student_name 就是一个标识符。

Python 标识符需要遵守下面的规则:

  1. 由字母、数字和下划线 _ 组成
  2. 不能以数字开头
  3. 不能使用 if、for、class 等 Python 关键字
  4. 区分大小写,name 和 Name 是两个不同的名字
名称是否可用原因
student_name可以符合规则,含义清楚
_score可以可以以下划线开头
name2可以数字不在开头
2name不可以以数字开头
student-name不可以包含短横线 -
class不可以使用了 Python 关键字

Python 也允许部分非英文字符作为标识符,但为了方便输入、协作和跨平台使用,课程中的变量名统一使用有含义的英文单词。

Python 命名风格 ​

只满足语法规则还不够,名字还应该容易理解,并且保持统一风格。

下划线命名法

所有字母小写,单词之间使用下划线连接:

python
student_name = "小明"
course_name = "Python 核心编程"

Python 的变量名和函数名通常使用这种方式,也叫 snake_case。

大驼峰命名法

每个单词的首字母大写:

text
StudentInfo
CourseManager

Python 的类名通常使用这种方式,也叫 PascalCase 或 CapWords。类会在面向对象章节中学习。

小驼峰命名法

第一个单词首字母小写,后续单词首字母大写:

text
studentName
courseManager

这种方式在其他编程语言中很常见,也叫 camelCase。Python 项目中的变量名通常优先使用下划线命名法。

下划线命名法和驼峰命名法

见名知意

student_name 比 a 更容易理解。除循环计数等简单场景外,尽量不要使用没有含义的单字母名称,也不要使用容易和数字混淆的 l、O、I。

代码风格与自动格式化 ​

PEP 是 Python Enhancement Proposal 的缩写,可以理解为 Python 的改进提案。PEP 8 专门介绍 Python 代码风格。

当前阶段先养成下面几个习惯:

  1. 缩进统一使用 4 个空格,不要混用 Tab 和空格
  2. 赋值符号两边各留一个空格
  3. 变量名使用有含义的英文和下划线命名法
  4. # 后留一个空格,行尾注释前保留两个空格
  5. 一条语句通常单独占一行,不把多条语句挤在一起

下面的代码可以运行,但不容易阅读:

python
name = "小明";course = "Python"
print(name, course)

整理后更清楚:

python
student_name = "小明"
course_name = "Python"

print(student_name, course_name)

为什么两段代码运行结果完全相同,我们却必须严格保持格式规范?因为 计算机不在乎排版,但人类的大脑极度依赖视觉结构。代码首先是写给人看的,只是顺便让计算机执行。

计算机视角与人类认知双视角对照图

放到真实的团队协作与软件工程生命周期中,统一的代码风格更是消灭沟通摩擦的“行业普通话”:

代码生命周期与团队协作流程对比图

在 PyCharm 中,你不需要每次都手动敲空格对齐。可以通过 Code | Reformat Code 自动格式化代码。Windows 和 Linux 的常用快捷键是 Ctrl + Alt + L。

格式化不能修复所有问题

自动格式化可以调整空格、缩进和换行,但不能替你起好变量名,也不能修复代码逻辑。格式化后仍然要自己检查代码。

规范的完整内容可以参考:

综合案例:学习信息卡 ​

现在把输入、变量、输出和注释组合起来:

python
# 接收学生输入的信息
student_name = input("请输入你的姓名:")
course_name = input("请输入正在学习的课程:")

# 输出学习信息卡
print("-" * 20)
print("学习信息卡")
print("姓名:", student_name)
print("课程:", course_name)
print("学习状态:正在学习")
print("-" * 20)

一次运行结果可能是:

text
请输入你的姓名:小明
请输入正在学习的课程:Python 核心编程
--------------------
学习信息卡
姓名:小明
课程:Python 核心编程
学习状态:正在学习
--------------------

这一版程序已经能够根据用户输入显示不同内容。暂时不需要理解 "-" * 20 的完整原理,它的作用是生成 20 个短横线;后面的字符串和运算符章节会继续讲解这种写法。

小结 ​

本节课最核心的是掌握 5 件事:

  1. print() 负责输出,input() 负责接收输入
  2. input() 得到的内容是字符串
  3. 变量要先赋值再使用,= 表示赋值
  4. Python 注释使用 #,三个引号本质上是字符串
  5. 变量名优先使用见名知意的下划线命名法,并保持统一格式

[zhengxin] path = /home/zhengxin/zhengxin browseable = yes read only = no valid users = zhengxin