YAML(Yet Another Markup Language 或 YAML Ain’t Markup Language) 是一种轻量级数据序列化格式,常用来配置文件、数据交换和表示结构化数据。它以人类可读性为设计目标,语法简洁直观,非常适合配置文件的用途。
YAML 的功能和用途
配置文件:
YAML 被广泛用于保存应用程序、服务、容器等的配置,例如:
Docker Compose 配置(docker-compose.yml)Kubernetes 配置(Pod、Service 等)ML 模型超参数设置
示例:server:
host: localhost
port: 8080
database:
user: admin
password: secret
name: example_db
数据序列化:
YAML 可用于将复杂的数据结构序列化为字符串,便于存储或传输,然后再反序列化为程序中的数据。适合多层嵌套的字典、列表、字符串、数字等数据。
替代 JSON 或 XML:
与 JSON 和 XML 类似,YAML 也是一种数据格式,但更易于手写和阅读。对比:
YAML 的可读性 > JSON > XMLYAML 和 JSON 更适合配置,而 XML 更常用于文档和协议。
跨语言兼容:
支持多种编程语言(Python、Java、C++ 等)解析和生成 YAML 格式,常用库包括 PyYAML、ruamel.yaml 等。
YAML 的基本语法
键值对:
使用冒号分隔键和值:name: John
age: 30
层级结构:
使用缩进表示层级(空格,不能使用 Tab):person:
name: John
age: 30
列表:
使用短横线表示列表项:fruits:
- apple
- banana
- orange
嵌套结构:
支持嵌套字典和列表:environment:
dev:
url: http://localhost:8080
debug: true
prod:
url: http://example.com
debug: false
多行字符串:
使用 | 或 > 表示多行文本:description: |
This is a long description
spanning multiple lines.
数据类型:
支持字符串、数字、布尔值、日期等:name: "John"
age: 30
active: true
birthday: 2000-01-01
YAML 的优势
易读性高:语法直观,适合人类直接编辑。简单灵活:支持复杂的数据结构(如嵌套字典、列表等)。广泛使用:被许多现代工具(如 Docker、Kubernetes)用作标准配置文件格式。
YAML 使用的典型场景
Docker Compose 文件:
version: "3.9"
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
Kubernetes 配置:
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: nginx
image: nginx:1.14.2
机器学习超参数配置:
model:
type: bert
hidden_size: 768
num_layers: 12
training:
batch_size: 32
learning_rate: 0.001
epochs: 10
总结
YAML 是一种简单而强大的数据格式,主要用于配置文件和数据序列化。它的直观语法和高可读性使其在现代软件开发中非常流行。如果需要更具体的 YAML 使用示例或解析方式,可以告诉我!