在 YAML 文件中设置变量(使用 &和 * 定义及引用变量)【亲测有用】

时间:2025-04-05 08:12:33

在 YAML 文件中,使用 &* 是一种常见的定义和引用变量的方式。也是最简单的方式

使用 & 定义变量

在 YAML 中,& 符号用于定义一个锚点(anchor),也就是一个命名的变量。这个变量可以在文件的其他地方被引用和复用。

例如:

title: &sc test

在这个例子中,title 被定义为一个名为 sc 的变量,它的值是 "test"

使用 * 引用变量

定义好变量之后,您可以使用 * 符号来引用它。这样做可以避免重复输入相同的值,提高 YAML 文件的可维护性。

继续之前的例子:

title: &sc test
actions: *sc

在这里,actions 键被设置为引用之前定义的 sc 变量。当 YAML 文件被解析时,actions 的值将被替换为 "test"

使用示例

让我们来看一个更完整的示例,演示如何在 YAML 文件中使用 &* 来定义和引用变量:

# 定义一些全局变量
database:
  &db_config
  host: localhost
  port: 5432
  user: myuser
  password: mypassword

# 在其他地方引用这些变量
development:
  database: *db_config
  debug: true

production:
  database: *db_config
  debug: false

在这个例子中:

  1. database 被定义为一个名为 db_config 的变量,它包含数据库连接的相关配置。
  2. developmentproduction 配置中,database 键被设置为引用 *db_config 变量。
  3. 当 YAML 文件被解析时,developmentproduction 字典中的 database 键的值将被替换为 db_config 变量的完整配置。

这种方式可以帮助您避免在整个 YAML 文件中重复输入相同的配置信息,从而提高文件的可维护性和可读性。

在 Python 中访问变量

在 Python 中读取使用 &* 定义的 YAML 变量非常简单。您可以使用常见的 YAML 解析库,如 yamlPyYAML

以下是使用 yaml 库的示例:

import yaml

with open('', 'r') as file:
    data = yaml.load(file, Loader=yaml.FullLoader)

# 访问定义的变量
database_config = data['database']
print(database_config)
# 输出: {'host': 'localhost', 'port': 5432, 'user': 'myuser', 'password': 'mypassword'}

# 访问引用的变量
development_config = data['development']
print(development_config['database'])
# 输出: {'host': 'localhost', 'port': 5432, 'user': 'myuser', 'password': 'mypassword'}

在这个例子中:

  1. () 函数会自动解析 YAML 文件中使用 &* 定义和引用的变量。
  2. 我们可以直接访问 data 字典中的 'database' 键,它包含了 db_config 变量的值。
  3. 同样,我们也可以访问 'development' 字典中的 'database' 键,它引用了 db_config 变量,因此包含了相同的数据库配置。