跳到主要内容

变量与基础数据类型

运维脚本中,变量用于保存主机名、IP、端口、阈值等运行时数据。Python 是动态类型语言:变量无需声明类型,但应清楚每个值代表什么。


基本类型速览

类型示例运维场景
str"192.168.1.10"IP、域名、路径
int8080端口、PID、磁盘 GB
float85.6CPU/内存使用率
boolTrue / False健康检查结果
hostname = "web-01"
ip = "10.0.0.5"
port = 443
cpu_percent = 72.5
is_healthy = cpu_percent < 80

print(type(hostname)) # <class 'str'>
print(type(port)) # <class 'int'>

字符串格式化

运维输出常需拼接主机、指标与状态,推荐 f-string(Python 3.6+):

host = "db-01"
disk_used_gb = 128
disk_total_gb = 256
usage = disk_used_gb / disk_total_gb * 100

# 保留一位小数,便于告警文案
msg = f"[{host}] 磁盘 {disk_used_gb}/{disk_total_gb} GB,使用率 {usage:.1f}%"
print(msg)
# [db-01] 磁盘 128/256 GB,使用率 50.0%

多行告警模板:

alert = f"""
主机: {host}
指标: disk_usage
当前值: {usage:.1f}%
阈值: 80%
"""
print(alert.strip())

类型转换

从配置文件或命令行读入的值通常是字符串,运算前需显式转换:

# 模拟从 CSV 或 API 读到的字符串
raw_port = "8080"
raw_threshold = "85.5"

port = int(raw_port)
threshold = float(raw_threshold)

# 转换失败会抛 ValueError,生产脚本应捕获
try:
bad = int("abc")
except ValueError as e:
print(f"端口格式错误: {e}")

布尔转换注意:bool("")Falsebool("0")True(非空字符串即为真)。


常量与命名

# 模块级常量:全大写 + 下划线
DEFAULT_SSH_PORT = 22
MAX_RETRY = 3
LOG_DIR = "/var/log/nginx"

# 变量:小写 + 下划线(snake_case)
remote_user = "deploy"
retry_count = 0

避免使用单字母变量(循环变量 i 除外),ip_listx 更易维护。


实战:解析简单键值配置

# 模拟一行 env 风格配置
line = "APP_ENV=production"

key, _, value = line.partition("=")
print(key, value) # APP_ENV production

# 数字阈值
max_connections = int("1000")
enabled = value == "production"
print(f"环境={value}, 生产模式={enabled}, 最大连接={max_connections}")

小结

  • 用 f-string 生成日志与告警文本
  • 外部输入(文件、API、命令行)先当字符串,再按需 int() / float()
  • 常量与变量命名区分清晰,便于 Code Review

下一章学习 列表与元组,批量管理 IP 与命令结果。