1. Python变量与格式化字符串基础入门
作为一名Python开发者,变量和字符串格式化是我们每天都要打交道的基础概念。今天我想分享一下这两个核心知识点的使用技巧和注意事项,希望能帮助刚入门的朋友少走弯路。
1.1 Python变量的本质与特性
Python中的变量本质上是一个指向内存对象的引用。与C/C++等语言不同,Python变量不需要声明类型,类型信息是附加在对象上的。
python复制# 变量赋值示例
counter = 100 # 整型
miles = 999.99 # 浮点型
name = "John" # 字符串
变量命名的几个重要规则:
- 只能包含字母、数字和下划线
- 不能以数字开头
- 区分大小写
- 避免使用Python关键字(如if, while等)
注意:Python是动态类型语言,同一个变量可以被重新赋值为不同类型的值,但这在实际开发中应该避免,容易导致代码难以维护。
1.2 字符串格式化的三种主要方式
1.2.1 %格式化(传统方式)
这是从Python2延续下来的格式化方法,类似于C语言的printf风格:
python复制print("Hello, %s! You have %d messages." % ("Alice", 5))
常用格式说明符:
- %s - 字符串
- %d - 十进制整数
- %f - 浮点数
- %x - 十六进制整数
1.2.2 str.format()方法(Python2.6+)
这是更现代的字符串格式化方法,提供了更强大的功能:
python复制print("Hello, {0}! Today is {1}.".format("Bob", "Monday"))
print("Balance: ${:.2f}".format(123.456))
format()方法的优势:
- 支持位置参数和关键字参数
- 支持格式控制(如:.2f表示保留两位小数)
- 可读性更好
1.2.3 f-string(Python3.6+)
这是目前最推荐的字符串格式化方式,简洁高效:
python复制name = "Charlie"
age = 25
print(f"My name is {name} and I'm {age} years old.")
f-string的特点:
- 在字符串前加f或F前缀
- 直接在{}内写表达式
- 执行速度快(编译时转换为常量)
- 支持复杂表达式和函数调用
1.3 格式化字符串的实用技巧
1.3.1 数字格式化
python复制# 千位分隔符
print(f"{1000000:,}") # 输出: 1,000,000
# 百分比
print(f"{0.25:.2%}") # 输出: 25.00%
# 十六进制
print(f"{255:#x}") # 输出: 0xff
1.3.2 对齐与填充
python复制# 左对齐,宽度10,填充*
print(f"{'left':*<10}") # 输出: left******
# 右对齐,宽度10,填充0
print(f"{123:0>10}") # 输出: 0000000123
# 居中对齐,宽度10
print(f"{'center':^10}") # 输出: center
1.3.3 日期时间格式化
python复制from datetime import datetime
now = datetime.now()
print(f"Today is {now:%Y-%m-%d %H:%M:%S}")
1.4 常见问题与解决方案
1.4.1 变量作用域混淆
python复制x = 10
def func():
x = 20 # 这是局部变量
print(x)
func() # 输出: 20
print(x) # 输出: 10
解决方案:
- 使用global关键字声明全局变量
- 更好的做法是避免使用全局变量
1.4.2 格式化字符串中的特殊字符
当需要在格式化字符串中包含{}时:
python复制# 错误写法
# print(f"{{0}}") # 会报错
# 正确写法
print(f"{{0}}") # 输出: {0}
print(f"{{{10}}}") # 输出: {10}
1.4.3 性能考虑
对于大量字符串拼接操作:
- 避免使用+运算符拼接字符串
- 优先使用join()方法或f-string
- 在循环中构建字符串时,考虑使用列表收集后再join
python复制# 低效
result = ""
for i in range(1000):
result += str(i)
# 高效
parts = []
for i in range(1000):
parts.append(str(i))
result = "".join(parts)
1.5 实际应用案例
1.5.1 生成报表
python复制data = [
{"name": "Alice", "score": 95, "grade": "A"},
{"name": "Bob", "score": 87, "grade": "B"},
{"name": "Charlie", "score": 78, "grade": "C"}
]
for student in data:
print(f"{student['name']:10} | {student['score']:5} | {student['grade']:2}")
1..5.2 日志记录
python复制def log_message(level, message):
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"[{timestamp}] [{level:^7}] {message}")
log_message("INFO", "System started")
log_message("ERROR", "File not found")
1.6 最佳实践总结
- Python3.6+环境下优先使用f-string
- 保持变量命名一致性和描述性
- 避免在格式化字符串中放入复杂逻辑
- 对于多语言项目,考虑使用gettext等国际化方案
- 性能敏感场景下注意字符串操作的效率
经验分享:在团队协作中,制定统一的字符串格式化规范非常重要,可以显著提高代码可读性和维护性。我们团队要求Python3.6+项目必须使用f-string,除非有特殊兼容性需求。
掌握好变量和字符串格式化的使用技巧,是写出高质量Python代码的基础。希望这些经验能帮助你更高效地使用这些基础但强大的功能。
