3、Python基础语法:注释、变量与数据类型、标识符与关键字
说实话,每次带新人入门Python,我都是先从这几个基础概念讲起。为什么呢?因为它们就像盖房子的地基——地基本身不太起眼,但后期所有出问题的地方,十有八九都是这里没搞扎实。
我记得刚工作那会儿,有次debug一个线上脚本,整整花了两小时。最后发现只是变量名拼错了一个字母。嗯,从那以后我就特别重视这些基础规则了。咱们今天就把这块彻底理清楚。
3.1 注释:写给别人,也写给未来的自己
什么是注释?说白了就是给代码加上的「解释性文字」。Python解释器在执行代码时,会完全忽略这些内容。它们存在的唯一目的,是让人能看懂代码的逻辑。
我个人习惯,写代码时注释占比大概在10%-15%。不是越多越好,而是该说清楚的地方一定不偷懒。
3.1.1 单行注释
用 # 开头,整行都被注释掉。也可以放在代码行后面。
# 这是一个单行注释
print("Hello, World!") # 这也是注释,跟在代码后面
3.1.2 多行注释
严格来说,Python没有专门的多行注释语法。但可以用三个单引号(或双引号)包裹多行文本,这种写法叫「文档字符串(docstring)」。虽然本质上是一个字符串表达式,但实际效果就是多行注释。
'''
这是一个多行注释的写法
可以写好几行内容
用来解释复杂的逻辑
'''
print("多行注释示例")
# 逐行注释,或者直接删掉。
3.2 变量:给数据贴个标签
变量,其实就是「名字」和「值」之间的绑定关系。简单说,你把一个值存到内存里,然后用一个名字来引用它。
Python中的变量不需要提前声明类型,这一点和Java、C++很不一样。你直接赋值就能用。
name = "张三"
age = 25
height = 1.75
is_student = True
3.2.1 变量命名规则
这里有几个硬性规则,记牢了:
- 只能由字母、数字、下划线组成
- 不能以数字开头
- 不能使用Python的关键字(后面会讲)
- 区分大小写:
name和Name是两个不同的变量
最佳实践: 变量名要「见名知义」。别用 a、b、c 这种无意义的命名,也别用拼音。哪怕英文单词拼错,也比拼音好。
我常用的是小写字母加下划线,比如 user_name、order_count,这种风格叫蛇形命名法。
3.2.2 动态类型
Python是动态类型语言。这意味着变量可以随时改变类型。你想想看,这在其他语言里可是要报错的。
x = 10 # x 是整数
print(type(x)) #
x = "hello" # x 现在是字符串了
print(type(x)) #
灵活归灵活,但也要小心。我记得有个项目里,因为变量在不同地方被赋了不同类型的值,结果后续逻辑全部崩了。后来我定了个规矩:同一个变量在整个代码块里,尽量保持类型一致。
3.3 数据类型:Python内置的几种常见类型
| 类型 | 名称 | 示例 | 说明 |
|---|---|---|---|
int |
整数 | 10, -3, 1000 |
可正可负,没有大小限制 |
float |
浮点数 | 3.14, -0.5, 1.0 |
带小数的数字 |
str |
字符串 | "hello", 'Python' |
单引号或双引号都可以 |
bool |
布尔值 | True, False |
注意首字母大写 |
list |
列表 | [1, 2, 3] |
有序、可变的集合 |
tuple |
元组 | (1, 2, 3) |
有序、不可变的集合 |
dict |
字典 | {"name": "张三"} |
键值对存储 |
这里有个实用小技巧:用 type() 函数可以随时查看变量类型。我在调试代码时,经常在可疑的地方加一行 print(type(x)) 来确认。
# 类型检查示例
a = 3.14
print(type(a)) #
b = "42"
# 字符串转整数
c = int(b)
print(c) # 42
print(type(c)) #
3.4 标识符与关键字:分清「名字」和「保留词」
3.4.1 标识符
标识符就是你给变量、函数、类等取的名字。规则之前已经说过一部分了,这里再补充几点:
- 理论上可以任意长,但别太长——我见过有人写
this_is_the_variable_for_storing_user_name,其实user_name就够了 - Python 3 开始支持中文变量名,但我个人强烈建议别用。团队协作时,中英文混写真的很折磨人
- 下划线开头的变量有特殊含义,比如
_name表示「私有」——我们后面再细讲
3.4.2 关键字
关键字是Python「预留下来」的单词,有特殊用途。你不能用它们做变量名或函数名。
Python 3.10 版本共有35个关键字。下面列出最常用的那些:
False, None, True, and, as, assert, 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
list 当变量名用了——list = [1, 2, 3]。代码当时没报错,但后面想用 list() 来创建新列表时,直接报错了。因为 list 已经被我「覆盖」成了普通变量。后来我记住了:任何内置函数名、类型名,都别拿去当变量名。
怎么查看所有关键字?很简单:
import keyword
print(keyword.kwlist)
# 输出:['False', 'None', 'True', 'and', 'as', ...]
你还可以用下面的方法判断某个词是不是关键字:
import keyword
print(keyword.iskeyword("if")) # True
print(keyword.iskeyword("hello")) # False
3.5 实战小练习
理论讲完了,咱们动动手。下面这段代码,我故意留了几个「错误」,你试着找找看:
# 找出下面代码中的错误
1name = "小红"
class = "三年级"
my-name = "张三"
True = 1
print(1name)
print(class)
print(my-name)
print(True)
答案:
1name:以数字开头,非法class:是关键字,不能当变量名my-name:中间有横线,非法。应该改成my_nameTrue:是关键字,不能给它赋值
嗯,这些坑我当初可都一个一个踩过。你现在一次性看到,以后就能少走弯路。
3.6 小结
这一章我们聊了四个基础概念:
- 注释:用
#写单行,用三引号写多行 - 变量:用有意义的名字绑定数据,Python动态类型,类型可改变
- 数据类型:整数、浮点数、字符串、布尔值等,用
type()查看类型 - 标识符与关键字:标识符是自定义的名字,关键字是Python保留的,不能乱用
我建议你现在打开编辑器,把上面每个示例都跑一遍。动手敲代码的感觉,远比你光看要来得深刻。毕竟,编程是「练」出来的,不是「看」出来的。