Python

Python 基础

·16 分钟阅读·6210 字

Python 基础语法——变量、数据类型、流程控制、函数、文件操作、模块、异常处理、面向对象

📋 目录

Python 基础

Python 编程基础——从环境准备到核心语法再到实操练习,面向运维工程师。


结合运维工程师使用场景,聚焦高频语法、实用案例、避坑要点,不讲冗余理论,全程搭配示例,学完可直接写运维脚本。

环境说明:基于 Python3,Linux 系统默认环境,执行方式:交互式终端 / .py 脚本文件。

一、前置准备

1. 运行方式

  1. 交互式终端(临时测试代码)
python3
>>> print("hello ops")

输入 exit() 退出。

  1. 脚本文件(正式运维脚本,推荐) 新建 test.py,编写代码后执行:
python3 test.py
  1. 脚本头部声明(Linux 规范) 文件首行添加解释器路径,可直接 ./test.py 执行:
#!/usr/bin/env python3

2. 注释(脚本必备)

  • 单行注释:#,用于说明代码、屏蔽代码

  • 多行注释:""" 内容 """''' 内容 ''',常用于脚本头部说明

#!/usr/bin/env python3
# 这是单行注释:服务器巡检脚本

"""
脚本功能:批量检查端口状态
作者:运维
日期:2025
"""
print("脚本开始执行")

二、变量与数据类型(运维核心)

变量:存储数据的容器,无需声明类型,赋值即定义。 运维常用 5 大类型:字符串、数字、布尔、列表、字典,其余了解即可。

1. 命名规范

  • 由字母、数字、下划线组成,不能以数字开头

  • 区分大小写,建议使用下划线命名(如 server_ipdisk_size

  • 禁止使用 Python 关键字(if/for/while 等)

2. 基础数据类型

(1)字符串 str(运维最高频)

文本、IP、端口、日志内容、配置信息都用字符串。

定义方式

单引号 ''、双引号 ""、三引号 """"""(支持换行)

# 常规字符串
ip = "192.168.1.100"
port = '9092'

# 多行字符串(常用于拼接配置、日志)
log_info = """
2025-06-11 10:00:00 error
service kafka down
"""

常用操作(必学)

s = "192.168.1.100"

# 1. 拼接字符串
name = "kafka"
msg = "服务名:" + name
print(msg)  # 服务名:kafka

# 2. 格式化输出(运维打印日志/信息首选)
# 方式1:f-string(Python3.6+ 推荐,简洁)
server = "MySQL"
status = "running"
print(f"服务 {server} 状态:{status}")

# 3. 分割 split() (解析日志、IP、配置常用)
ip_str = "192.168.1.100:22"
ip_list = ip_str.split(":")  # 按冒号分割
print(ip_list[0])  # 192.168.1.100
print(ip_list[1])  # 22

# 4. 替换 replace() (批量修改配置)
conf = "port=80"
new_conf = conf.replace("80", "8080")
print(new_conf)  # port=8080

# 5. 去除首尾空格/换行 strip() (处理日志、脏数据)
data = "  kafka  \n"
print(data.strip())  # kafka

# 6. 判断是否包含内容 in (日志关键字匹配)
log = "java.net.ConnectException"
if "error" in log:
    print("检测到错误日志")

(2)数字 int /float

  • int 整数:进程 ID、端口、数量、行数

  • float 浮点数:磁盘使用率、内存占比

port = 9092        # 整数
disk_usage = 78.5  # 浮点数

# 算术运算 + - * / %
a = 10
b = 3
print(a + b)   # 13
print(a % b)   # 1 取余(判断奇偶、轮询任务常用)

(3)布尔值 bool

只有两个值:True(真)、False(假) 用于条件判断:服务是否启动、端口是否开放、文件是否存在

is_running = True
is_exist = False

if is_running:
    print("服务正常运行")

(4)列表 list [](批量存储,运维必备)

有序可变数组,用来存储多台主机 IP、端口列表、日志行、文件路径

定义与基础操作

# 主机IP列表
hosts = ["192.168.1.10", "192.168.1.11", "192.168.1.12"]

# 取值:下标从 0 开始
print(hosts[0])  # 第一个IP:192.168.1.10

# 追加元素(动态添加主机)
hosts.append("192.168.1.13")

# 删除元素
hosts.remove("192.168.1.10")

# 获取列表长度(主机数量)
print(len(hosts))

核心场景:遍历列表(批量执行任务)

hosts = ["192.168.1.10", "192.168.1.11"]
for ip in hosts:
    print(f"正在处理主机:{ip}")

(5)字典 dict {key:value}(配置 / 结构化数据首选)

键值对结构,适合存储主机详情、配置项、接口返回 JSON 数据,查询速度极快。

  • key(键):唯一,一般用字符串

  • value(值):可以是任意类型(字符串、数字、列表)

定义与基础操作

# 单台服务信息
server = {
    "name": "kafka",
    "port": 9092,
    "status": "running"
}

# 取值
print(server["name"])   # kafka
print(server["port"])   # 9092

# 修改值
server["status"] = "down"

# 新增键值对
server["ip"] = "192.168.1.100"

# 遍历字典(运维解析配置/资产)
for k, v in server.items():
    print(f"{k} : {v}")

补充:空值 None

表示空、不存在,常用于判断命令返回、连接状态

res = None
if res is None:
    print("未获取到数据")

三、运算符

1. 比较运算符(条件判断核心)

结果为布尔值 True/False

符号含义
==等于(注意:单个 = 是赋值)
!=不等于
> < >= <=大于、小于、大于等于、小于等于
port = 9092
if port == 9092:
    print("端口匹配")

usage = 85
if usage > 80:
    print("磁盘使用率过高,告警")

2. 逻辑运算符(多条件组合)

用于同时判断多个条件:

  • and:并且(所有条件都成立)

  • or:或者(任意一个条件成立)

  • not:取反

# 端口开放 并且 服务状态正常
port_ok = True
service_ok = True
if port_ok and service_ok:
    print("服务健康")

# 磁盘使用率 >90 或 内存使用率 >90,触发告警
disk = 92
mem = 80
if disk > 90 or mem > 90:
    print("资源告警")

四、流程控制(脚本逻辑骨架)

1. 分支判断 if / elif / else

根据条件执行不同逻辑,判断服务状态、文件存在、资源阈值必用。

基础语法

# 单条件判断
status = "running"
if status == "running":
    print("服务正常")
else:
    print("服务异常")

# 多条件判断(elif 多分支)
usage = 85
if usage < 70:
    print("资源正常")
elif 70 <= usage < 90:
    print("资源使用率偏高")
else:
    print("资源严重告警")

运维常用场景:判断文件 / 目录是否存在

后续搭配 os 模块使用,先掌握语法逻辑。

2. 循环语句

(1)for 循环(运维最常用

多用于遍历列表、文件行、主机列表、日志,固定次数循环。

语法 1:遍历序列(列表 / 字符串)

# 遍历主机列表,批量操作
host_list = ["192.168.1.10", "192.168.1.11"]
for host in host_list:
    print(f"开始巡检主机 {host}")

语法 2:range() 生成数字序列

用于固定次数循环、端口遍历

# 遍历端口 80-85
for port in range(80, 86):
    print(f"检测端口:{port}")

(2)while 循环

条件循环:满足条件就一直执行,多用于持续监听、重试、死循环守护进程

# 死循环:持续监控(运维守护脚本常用)
while True:
    print("持续监控服务中...")
    # 可搭配 time.sleep() 休眠,避免死循环占满CPU

3. 循环控制关键字

  • break:跳出整个循环

  • continue:跳过当前一次循环,进入下一次

# 遍历主机,找到指定IP就停止
hosts = ["10.0.0.1", "10.0.0.2", "10.0.0.3"]
for ip in hosts:
    if ip == "10.0.0.2":
        print("找到目标主机")
        break  # 终止循环
    print(ip)

五、函数 def(代码复用核心)

把重复逻辑封装成函数,避免代码冗余。运维场景:封装「执行命令」「端口检测」「巡检」通用逻辑。

1. 基础语法

def 函数名(参数):
    函数体逻辑
    return 返回值  # 可选,返回结果

2. 简单示例

示例 1:无参函数(固定逻辑)

# 封装:打印巡检头部
def print_title():
    print("===== 服务器巡检开始 =====")

# 调用函数
print_title()

示例 2:带参数 + 返回值(运维主力用法)

# 封装:检测端口是否开放(简化逻辑)
def check_port(host, port):
    if port > 0:
        return True
    else:
        return False

# 调用函数
result = check_port("192.168.1.100", 9092)
if result:
    print("端口正常")

3. 函数作用域

  • 函数内部变量:局部变量,外部无法使用

  • 函数外部变量:全局变量,函数内可读取(修改需加 global,运维尽量少用)


六、异常处理 try except(生产脚本强制必加

运维脚本批量操作多台主机时,单台报错不能让整个脚本终止,异常捕获是容错关键

1. 基础语法

try:
    # 可能报错的代码
    逻辑代码
except 异常类型:
    # 报错后执行的代码
    异常处理逻辑
finally:
    # 无论是否报错,最终都会执行(可选,用于释放连接、关闭文件)

2. 运维实战示例

hosts = ["192.168.1.10", "192.168.1.11"]

for ip in hosts:
    try:
        # 模拟远程执行命令(可能连接超时/失败)
        print(f"正在连接 {ip}")
        num = 1 / 0  # 模拟报错
    except Exception as e:  # 捕获所有异常,e 为错误信息
        print(f"主机 {ip} 执行失败,错误:{e}")
        continue  # 跳过当前主机,继续下一台

说明:Exception 通用捕获所有异常,运维脚本优先使用。


七、模块与导入 import

Python 功能靠模块 / 库实现,内置模块无需安装,第三方库需要 pip3 install

1. 导入语法

# 方式1:导入整个模块
import os
os.path.exists("/etc/passwd")

# 方式2:从模块中导入指定功能
from time import sleep
sleep(3)  # 休眠3秒

2. 运维高频内置模块(先记导入方式)

后续重点学习,此处仅做引入:

import os          # 文件、目录、路径操作
import subprocess  # 执行Linux命令
import psutil      # 系统资源监控
import re          # 正则表达式(日志解析)
import json        # 解析JSON数据
import time, datetime  # 时间处理

八、综合实战小案例(整合所有语法)

结合上面知识点,写一个简易磁盘巡检脚本,贴近真实运维工作:

#!/usr/bin/env python3
# 磁盘使用率巡检脚本

# 1. 定义函数:判断磁盘是否告警
def check_disk(usage):
    """判断磁盘使用率,返回状态"""
    if usage >= 90:
        return "严重告警"
    elif usage >= 80:
        return "一般告警"
    else:
        return "正常"

# 2. 磁盘列表
disk_list = [75, 86, 92, 60]

# 3. 循环巡检 + 异常捕获
print("===== 磁盘巡检任务 =====")
for idx, use in enumerate(disk_list):
    try:
        status = check_disk(use)
        print(f"分区{idx+1} 使用率:{use}%  状态:{status}")
    except Exception as e:
        print(f"分区{idx+1} 检测失败:{e}")

print("巡检结束")

九、学习总结 & 运维学习建议

1. 必掌握清单(优先级从高到低)

  1. 注释、变量、字符串操作、列表、字典

  2. if 分支、for/while 循环、break/continue

  3. 函数封装 def

  4. 异常捕获 try except(生产脚本必备)

  5. 模块导入 import

2. 学习建议

  1. 边学边练:每学一个语法,写小段代码测试;

  2. 结合运维场景:用语法模拟「主机遍历、端口检测、日志处理、资源判断」;

  3. 拒绝复杂语法:类、继承、装饰器、异步等开发向内容,运维初期不用学

  4. 替代 Shell:把日常简单 Shell 功能改成 Python 脚本,学以致用。

3. 下一步学习方向

基础语法掌握后,继续学习: os 文件操作 → subprocess 执行系统命令 → 正则 re → 远程 SSH、接口请求。


关联文档