相约 2023 年 BazelCon 将于 10 月 24 日至 25 日在 Google 慕尼黑举办!报名现已开放! 了解详情

所有 Starlark 文件

报告问题

本页面包含所有 Starlark 文件(包括 BUILD、WORKSPACE、MODULE.bazel 和所有 .bzl 文件)中提供的全局方法。

会员

全部

bool all(elements)

如果所有元素求得的值为 True 或者集合为空,则返回 true。元素使用 bool 函数转换为布尔值。
all(["hello", 3, True]) == True
all([-1, 0, 1]) == False

参数

参数 说明
elements 必需
一个字符串或一组元素。

任意

bool any(elements)

如果至少有一个元素的结果为 True,则返回 true。元素使用 bool 函数转换为布尔值。
any([-1, 0, 1]) == True
any([False, 0, ""]) == False

参数

参数 说明
elements 必需
一个字符串或一组元素。

bool

bool bool(x=False)

Bool 类型的构造函数。如果对象是 NoneFalse、空字符串 ("")、数字 0 或空集合(例如 ()[]),它会返回 False。否则,它返回 True

参数

参数 说明
x default = False
要转换的变量。

字典

dict dict(pairs=[], **kwargs)

根据可选的定位参数和一组关键字参数创建字典。如果同一个键被多次提供,系统将使用最后一个值。通过关键字参数提供的条目应排在通过位置参数提供的条目之后。

参数

参数 说明
pairs default = []
一个字典或元素,其元素均为长度 2(键、值)。
kwargs 必需
其他条目的字典。

dir

list dir(x)

返回字符串列表:参数对象的属性名称和方法。

参数

参数 说明
x 必需
要检查的对象。

枚举

list enumerate(list, start=0)

返回对(双元素元组)对的列表,其中包含索引 (int) 以及输入序列中的项。
enumerate([24, 21, 84]) == [(0, 24), (1, 21), (2, 84)]

参数

参数 说明
list 必需
输入序列。
start default = 0
起始索引。

fail

None fail(msg=None, attr=None, *args)

导致执行失败并出现错误。

参数

参数 说明
msg default = None
已弃用:请改用位置参数。此参数类似于隐式前导位置参数。
attr string; or None; default = None
已弃用。使包含此字符串的可选前缀被添加到错误消息中。
args 必需值
错误消息中显示的值列表(采用 str 格式并与空格连接)。

float

float float(x=unbound)

返回 x 作为浮点值。
  • 如果 x 已经是浮点数,float 会返回它不变。
  • 如果 x 是一个布尔值,float 表示 True,1.0 表示 False,0.0 表示 False。
  • 如果 x 是整数,float 会将最接近的有限浮点值返回 x;如果量级过大,则返回错误。
  • 如果 x 是一个字符串,它必须是有效的浮点数字面量,或者等于(不区分大小写)或 NaNInfInfinity),后面可选择使用 +- 符号。
任何其他值都会引发错误。如果没有参数,float() 会返回 0.0。

参数

参数 说明
x default = unbound
要转换的值。

getattr

unknown getattr(x, name, default=unbound)

返回给定名称的结构体字段(如果存在)。否则,它会返回 default(如果已指定)或引发错误。getattr(x, "foobar") 相当于 x.foobar
getattr(ctx.attr, "myattr")
getattr(ctx.attr, "myattr", "mydefault")

参数

参数 说明
x 必需
要访问其属性的结构体。
name 必需
结构体名称。
default default = unbound
当结构体没有给定名称的属性时返回的默认值。

Hasattr

bool hasattr(x, name)

如果对象 x 具有给定 name 的属性或方法,则返回 True,否则返回 False。示例:
hasattr(ctx.attr, "myattr")

参数

参数 说明
x 必需
要检查的对象。
name 必需
属性的名称。

hash

int hash(value)

返回字符串的哈希值。使用 Java 的 String.hashCode() 所用的同一算法确定性地计算,即:
s[0] * (31^(n-1)) + s[1] * (31^(n-2)) + ... + s[n-1]
目前不支持对字符串以外的值进行哈希处理。

参数

参数 说明
value 必需
要对其进行哈希处理的字符串值。

int

int int(x, base=unbound)

返回 x 作为整数值。
  • 如果 x 已经是整数,int 会返回它不变。
  • 如果 x 是一个布尔值,int 表示 True 和 0 表示 False。
  • 如果 x 是一个字符串,它的格式必须为 <sign><prefix><digits><sign> 可以是 "+""-" 或为空(解析为正数)。<digits> 是 0 到 base - 1 之间的数字序列,其中字母 a-z(或等效的 A-Z)用作 10-35 的数字。如果 base 为 2/8/16,则 <prefix> 是可选的,可能分别为 0b/0o/0x(或等同于 0B/0O/0X);如果 base 是除了这些基或特殊值 0 的任何其他值,则前缀必须为空。如果 base 为 0,则该字符串将被解释为整数字面量,也就是说,根据使用哪个前缀,选择 2/8/10/16 底座之一。如果 base 为 0,则不使用前缀,并且超过一个数字。前导数字不能为 0;这是为了避免八进制和十进制混淆。字符串表示的数字大小在 int 类型允许的范围内。
  • 如果 x 是浮点数,int 会返回该浮点数的整数值,并四舍五入。如果 x 是无限的(NaN 或无穷大),则会发生错误。
如果 x 为任何其他类型,或者该值是不符合上述格式的字符串,则此函数会失败。与 Python 的 int 函数不同,此函数不允许使用零参数,也不允许对字符串参数使用无关空格。

示例:

int("123") == 123
int("-123") == -123
int("+123") == 123
int("FF", 16) == 255
int("0xFF", 16) == 255
int("10", 0) == 10
int("-0x10", 0) == -16
int("-0x10", 0) == -16
int("123.456") == 123

参数

参数 说明
x 必需
要转换的字符串。
base default = unbound
用于解释字符串值基数,默认为 10。检测 2 时,整数必须是 2 到 36(含 0 和 06),就像 x 是整数字面量一样。如果值不是字符串,则不得提供此参数。

len

int len(x)

返回字符串、序列(例如列表或元组)、字典、其他可迭代项的长度。

参数

参数 说明
x 必需
要报告的时长的值。

list

list list(x=[])

返回元素与给定可迭代值相同的新列表。
list([1, 2]) == [1, 2]
list((2, 3, 2)) == [2, 3, 2]
list({5: "a", 2: "b", 4: "c"}) == [5, 2, 4]

参数

参数 说明
x default = []
要转换的对象。

最大值

unknown max(*args)

返回所有给定参数中最大的参数。如果仅提供一个参数,该参数必须是非空的 Iterable。如果元素无法比较(例如 int 与字符串),或者没有提供任何参数,则会发生错误。
max(2, 5, 4) == 5
max([5, 6, 3]) == 6

参数

参数 说明
args 必需
要检查的元素。

分钟

unknown min(*args)

返回所有给定参数中的最小参数。如果只提供一个参数,它必须是非空的可迭代项。如果元素无法比较(例如 int 与字符串),或者没有提供任何参数,则会发生错误。
min(2, 5, 4) == 2
min([5, 6, 3]) == 3

参数

参数 说明
args 必需
要检查的元素。

输出

None print(sep=" ", *args)

输出 args 作为调试输出。该字符串以字符串 "DEBUG" 和此调用的位置(文件和行号)为前缀。未指定将参数转换为字符串的确切方式,并且随时可能会更改。具体而言,它可能与 str()repr() 采用的格式不同(比后者更详细)。

由于正式版代码会为用户创建网络垃圾,因此不建议在正式版代码中使用 print。如需弃用,最好尽可能使用 fail() 严重错误。

参数

参数 说明
sep default = " "
对象之间的分隔符字符串,默认为空格 (" ")。
args 必需
要输出的对象。

范围

sequence range(start_or_stop, stop_or_none=None, step=1)

创建一个列表,其中项从 startstop,以 step 为增量。如果提供单个参数,则项的范围为 0 到相应元素。
range(4) == [0, 1, 2, 3]
range(3, 9, 2) == [3, 5, 7]
range(3, 0, -1) == [3, 2, 1]

参数

参数 说明
start_or_stop 必需
如果提供了停止,则开始元素的值除外;否则,则停止元素的实际值为 0
stop_or_none int; or None; default = None
第一个结果项的可选索引包含在生成的列表中;到达 stop 之前停止生成列表。
step default = 1
增量(默认值为 1)。此值可能为负数。

获得

string repr(x)

将任何对象转换为字符串表示形式。这对于调试很有用。
repr("ab") == '"ab"'

参数

参数 说明
x 必需
要转换的对象。

reversed

list reversed(sequence)

返回未冻结的新列表,其中包含按可逆顺序排列的原始可迭代序列的元素。
reversed([3, 5, 4]) == [4, 5, 3]

参数

参数 说明
sequence 必需
要反转的可迭代序列(例如列表)。

已排序

list sorted(iterable, *, key=None, reverse=False)

返回一个新的已排序列表,其中包含所提供的可迭代序列的所有元素。如果任何一对元素 x y 无法与 x < y 进行比较,则可能会出错。这些元素将按升序排列,除非反向参数为 True(在此例中为降序)。 排序比较稳定:比较相等的元素会保留其原始相对顺序。
sorted([3, 5, 4]) == [3, 4, 5]

参数

参数 说明
iterable 必需
用于排序的可迭代序列。
key default = None
在比较之前为每个元素应用的可选函数。
reverse default = False
按降序返回结果。

字符串

string str(x)

将任何对象转换为字符串。这对于调试很有用。
str("ab") == "ab"
str(8) == "8"

参数

参数 说明
x 必需
要转换的对象。

tuple

tuple tuple(x=())

返回一个元数与给定可迭代值相同的元组。
tuple([1, 2]) == (1, 2)
tuple((2, 3, 2)) == (2, 3, 2)
tuple({5: "a", 2: "b", 4: "c"}) == (5, 2, 4)

参数

参数 说明
x default = ()
要转换的对象。

类型

string type(x)

返回其参数的类型名称。这对于调试和类型检查非常有用。示例:
type(2) == "int"
type([1]) == "list"
type(struct(a = 2)) == "struct"
此函数以后可能会发生变化。如需编写与 Python 兼容的代码并且满足未来需求,请仅使用它来比较返回值:
if type(x) == type([]):  # if x is a list

参数

参数 说明
x 必需
要检查的对象类型。

zip

list zip(*args)

返回 tuplelist,其中 i-th 元组包含来自每个参数序列或可迭代项的第 i 个元素。该列表具有最短输入内容的大小。它通过一个可迭代参数返回一个 1 个元组列表。如果不包含任何参数,它将返回空列表。示例:
zip()  # == []
zip([1, 2])  # == [(1,), (2,)]
zip([1, 2], [3, 4])  # == [(1, 3), (2, 4)]
zip([1, 2], [3, 4, 5])  # == [(1, 3), (2, 4)]

参数

参数 说明
args 所需的
列表,以压缩。