Appearance
变量、类型与字符串
写代码最先打交道的就是两样东西:存数据的变量,和处理文本的字符串——一个待办事项的标题、一篇博客的内容、一个联系人的名字,在代码里都先变成变量和字符串。
先说一个 Python 最显眼的特点:缩进是有意义的。if、for、def 下面的代码块,靠缩进表示归属,不像别的语言用花括号 {}。缩进错了(比如混了空格和 Tab、或者缩进层数不对),Python 直接报语法错误。而且缩进强制规范之后,代码反而比花括号语言更好读。
一、变量与类型
Python 不需要先声明类型,赋值即定义:
python
todo_title = "写周报" # str,字符串
todo_count = 5 # int,整数
progress = 0.8 # float,浮点数
done = True # bool,布尔值
note = None # NoneType,表示"没有值"type() 可以查看变量当前是什么类型:
python
print(type(todo_count)) # <class 'int'>
print(type(done)) # <class 'bool'>注意 type 输出里的 class——Python 里所有类型本质上都是类。现在只要知道:每个值都有自己的类型,类型决定了这个值能做什么操作。
变量名通常用小写加下划线,比如 todo_title、max_retry。别为了省字符写得太短,像 tt、sn 这种缩写,隔几个月再打开代码得猜半天含义。todo_title 比 tt 多几个字,但能少猜一次。
常见的基本类型:
| 类型 | 示例 | 用来表示 |
|---|---|---|
str | "写周报" | 文本:标题、名字、内容 |
int | 5 | 整数:数量、序号、状态码 |
float | 0.8 | 小数:比例、进度 |
bool | True / False | 是非:开关、检查结果 |
None | None | "没有值":还没赋值、查询没结果 |
None 这个类型要特别留意——它不是 0,不是空字符串,不是 False,它表示"什么都没有"。查询一个联系人没查到,返回的是 None,不是空字符串。这个区别后面写条件判断时会反复用到。
二、字符串与 f-string
文本在 Python 里是字符串。最常用的操作是把变量嵌进字符串里,这叫 f-string(注意字符串前面的 f):
python
title = "写周报"
count = 5
message = f"待办《{title}》还有 {count} 条没完成"
print(message) # 待办《写周报》还有 5 条没完成花括号 {} 里可以写简单表达式:
python
total = 8
done = 5
print(f"完成度 {done / total * 100:.1f}%") # 完成度 62.5%这里的 :.1f 是格式化——保留 1 位小数。f-string 是 Python 3.6 之后才有的,老代码里可能见到 .format() 或者 % 写法,功能类似但 f-string 最直观,新代码统一用 f-string。
几个常用格式化:
python
price = 19.5
ratio = 0.875
print(f"价格 {price:.2f} 元") # 价格 19.50 元(保留 2 位小数)
print(f"比例 {ratio:.1%}") # 比例 87.5%(百分比格式)
print(f"序号 {5:03d}") # 序号 005(补零到 3 位)三、字符串常用方法
字符串自带一批方法(方法就是字符串能做的动作),掌握几个常用的,处理文本会顺很多:
python
title = " 写周报 "
clean = title.strip() # 去掉首尾空白,得到 "写周报"
upper_title = title.upper() # 转大写(中文没变化,英文有用)
has_word = title.startswith("写") # 判断是否以"写"开头拆分和拼接——处理一行文本、一段日志最常用:
python
line = "张三,zhangsan@example.com,13800000000"
parts = line.split(",") # 按逗号拆成列表
print(parts) # ['张三', 'zhangsan@example.com', '13800000000']
print(parts[0]) # 张三(取第一段)
words = ["待办", "完成", "已删"]
text = "-".join(words) # 用"-"把列表拼成字符串
print(text) # 待办-完成-已删split 和 join 是一对反操作——split 把字符串拆成列表,join 把列表拼成字符串,这两个用得极多。
几个常用方法速查:
| 方法 | 作用 |
|---|---|
strip() | 去首尾空白(含换行) |
split(sep) | 按分隔符拆成列表 |
join(list) | 把列表拼成字符串 |
replace(old, new) | 替换内容 |
startswith() / endswith() | 判断前缀/后缀 |
upper() / lower() | 转大写/小写 |
find(sub) | 查找子串位置,找不到返回 -1 |
找子串有两个常用写法,别搞混:"写" in title 返回布尔值(在不在),title.find("写") 返回位置(在哪)。判断"有没有"用 in,判断"在哪"用 find。
四、多行字符串
三引号 """...""" 能保留换行,适合写多行内容——配置模板、长文本、文档说明:
python
email_template = """你好 {name}:
你有一条待办事项需要处理:
{title}
请在 {deadline} 前完成。
"""
print(email_template.format(name="张三", title="写周报", deadline="周五"))三引号字符串另一个重要用途是函数的文档字符串(docstring),放在函数/类/模块开头,说明这个函数干什么用。
字符串的内容看着琐碎,但写脚本时几乎每段都在处理文本——读文件得到字符串、解析得到字段、拼接成输出。这几个方法用熟了,后面会轻松很多。