Python 教程 02:基础语法

“纸上得来终觉浅,绝知此事要躬行。”

学编程和学游泳一样,看再多教程也不如下水扑腾几下。今天我们来学习 Python 的基础语法,这些是写代码的"规矩"。

1. 注释:给代码写"旁白"

注释就像电影里的旁白,是写给人看的,不会被 Python 执行。写注释有两个好处:

  1. 提醒自己:三个月后回头看代码,如果没有注释,你可能会问"这是谁写的垃圾代码?"(然后发现是自己写的)
  2. 方便别人:团队协作时,注释能让其他人快速理解你的思路

单行注释

#开头,从#开始到行尾的所有内容都是注释:

1# 这是一个单行注释
2print("Hello")  # 这也是注释,可以放在代码后面
3
4# 计算圆的面积
5radius = 5
6area = 3.14 * radius ** 2

多行注释

Python 没有专门的多行注释语法,但可以用三引号('''""")来实现:

 1"""
 2这是一个多行注释
 3可以写很多行
 4通常用于写文档字符串(docstring)
 5"""
 6
 7'''
 8单引号也可以
 9但更推荐用双引号
10'''
11
12def calculate_area(radius):
13    """
14    计算圆的面积
15
16    参数:
17        radius: 圆的半径
18
19    返回:
20        圆的面积
21    """
22    return 3.14 * radius ** 2

最佳实践:注释要写"为什么",而不是"是什么"。比如# 计算圆的面积这种注释意义不大,因为代码本身已经很清楚了。更好的注释是:# 使用简化的π值,精确度够用且计算更快

2. 缩进:Python 的"规矩"

如果说 C/Java 用大括号{}来组织代码结构,那 Python 用的就是缩进。这是 Python 最独特的地方,也是新手最容易犯错的地方。

为什么要缩进?

1# 正确的缩进
2if True:
3    print("这行有缩进")
4    print("这行也有缩进")
5print("这行没有缩进,不属于if块")
6
7# 错误的缩进会报错
8if True:
9print("没缩进")  # IndentationError!

Python 强制使用缩进来表示代码块,这让代码看起来更整洁。就像古诗词讲究对仗工整,Python 讲究缩进整齐。

缩进规则

  1. 使用空格,不要用 Tab(或者统一用 Tab,但千万别混用)
  2. 标准缩进是 4 个空格
  3. 同一代码块的缩进必须相同
1# 标准缩进(4个空格)
2if True:
3    print("第一行")
4    if True:
5        print("嵌套的第二层,8个空格")
6    print("回到第一层,4个空格")

编辑器提示:现代 IDE(如 VS Code、PyCharm)都会自动帮你处理缩进,按 Tab 键会自动转换成 4 个空格。

3. 变量:存储数据的"容器"

变量就像贴了标签的盒子,用来存储数据。

变量赋值

Python 的变量不需要提前声明类型,赋值即定义:

 1# 简单赋值
 2a = 10
 3b = "10"
 4c = 10.2
 5
 6# 多个变量赋相同值
 7x = y = z = 0
 8
 9# 同时给多个变量赋值
10name, age = "张三", 25
11
12print(a, b, c)  # 10 10 10.2
13print(x, y, z)  # 0 0 0
14print(name, age)  # 张三 25

变量命名规则

Python 的变量命名有几个硬性规定和一些"潜规则":

硬性规定(违反会报错):

  1. 只能包含字母、数字、下划线
  2. 不能以数字开头
  3. 不能使用 Python 关键字(如ifforclass等)
  4. 区分大小写(nameName是两个不同的变量)
 1# 合法的变量名
 2user_name = "Tom"
 3age2 = 20
 4_private = "私有变量"
 5中文变量 = "可以,但不推荐"
 6
 7# 非法的变量名
 82name = "Tom"  # SyntaxError: 不能以数字开头
 9user-name = "Tom"  # SyntaxError: 不能用连字符
10class = "Python"  # SyntaxError: 不能用关键字

“潜规则”(遵循 PEP 8 规范):

  1. 变量名用小写字母,单词间用下划线分隔(snake_case)
  2. 常量用全大写字母
  3. 类名用大写字母开头的驼峰命名(CamelCase)
  4. 私有变量以下划线开头
1# 推荐的命名风格
2user_name = "Tom"  # 普通变量
3MAX_SIZE = 100  # 常量
4class UserManager:  # 类名
5    pass
6_internal_var = "内部使用"  # 私有变量

查看变量类型

使用type()函数查看变量类型:

1a = 10
2b = "10"
3c = 10.2
4d = True
5
6print(type(a))  # <class 'int'>
7print(type(b))  # <class 'str'>
8print(type(c))  # <class 'float'>
9print(type(d))  # <class 'bool'>

删除变量

使用del可以删除变量:

1x = 100
2print(x)  # 100
3del x
4# print(x)  # NameError: name 'x' is not defined

4. 输入与输出

输出:print()

print()是最常用的输出函数,我们在第一课已经见过了:

 1# 基本用法
 2print("Hello, World!")
 3
 4# 打印多个值,用逗号分隔
 5print("姓名:", "张三", "年龄:", 25)  # 输出: 姓名: 张三 年龄: 25
 6
 7# 指定分隔符和结束符
 8print("A", "B", "C", sep="-")  # 输出: A-B-C
 9print("不换行", end=" ")
10print("继续")  # 输出: 不换行 继续

输入:input()

input()函数用于获取用户输入,返回值总是字符串:

 1# 获取用户输入
 2name = input("请输入你的名字:")
 3print("你好," + name)
 4
 5# 注意:input()返回的是字符串
 6age = input("请输入你的年龄:")
 7print(type(age))  # <class 'str'>
 8
 9# 需要转换类型
10age = int(input("请输入你的年龄:"))
11print(type(age))  # <class 'int'>
12print("十年后你", age + 10, "岁")

小心陷阱:新手常犯的错误是忘记把input()的结果转换成数字类型,导致类型错误。

5. 代码编码声明

在 Python 3 中,默认编码是 UTF-8,支持中文。但在 Python 2 中需要声明编码。为了兼容性,建议在文件开头加上编码声明:

1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3
4# 后面是你的代码
5print("支持中文了")

第一行#!/usr/bin/env python3是 Shebang,告诉系统用 python3 来执行这个文件(Linux/Mac 有用,Windows 忽略)。

第二行# -*- coding: utf-8 -*-声明文件编码为 UTF-8。

6. 一个完整的示例

把今天学的内容综合起来:

 1#!/usr/bin/env python3
 2# -*- coding: utf-8 -*-
 3
 4"""
 5一个简单的问候程序
 6演示注释、变量、输入输出的使用
 7"""
 8
 9# 常量定义
10GREETING = "你好"
11
12# 获取用户信息
13name = input("请输入你的名字:")
14age = int(input("请输入你的年龄:"))
15
16# 计算十年后的年龄
17future_age = age + 10
18
19# 输出问候语
20print(GREETING + "," + name + "!")
21print("你今年", age, "岁")
22print("十年后你将", future_age, "岁")
23
24# 判断是否成年(预告下一课的内容)
25if age >= 18:
26    print("你已经成年了")

7. 小结

今天我们学习了 Python 的基础语法:

  • 注释:单行用#,多行用三引号
  • 缩进:Python 的代码块标志,通常用 4 个空格
  • 变量:存储数据的容器,命名要规范
  • 输入输出:print()输出,input()输入
  • 编码声明:# -*- coding: utf-8 -*-

这些语法看似简单,但却是所有 Python 代码的基础。就像练武要先扎马步,写代码也要先掌握这些基本功。


练习题

  1. 写一个程序,获取用户的姓名和出生年份,计算并输出用户的年龄
  2. 尝试给变量取一些不合法的名字(如1nameuser-name),看看会报什么错
  3. 写一个程序,计算长方形的面积,长和宽由用户输入

思考题

为什么 Python 要用缩进而不是大括号?这样做有什么好处和坏处?


本文代码示例


相关阅读