所有 Bazel 檔案

回報問題 Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

可在所有 Bazel 檔案中使用的函式,包括 .bzl 檔案、BUILD、MODULE.bazel、VENDOR.bazel 和 WORKSPACE。

成員

abs

unknown abs(x)

傳回數字的絕對值 (同大小的非負數)。
abs(-2.3) == 2.3

參數

參數 說明
x intfloat; 必填
(int 或 float)

全部

bool all(elements)

如果所有元素的評估結果為 True,或集合為空白,則傳回 true。系統會使用 bool 函式將元素轉換為布林值。
all(["hello", 3, True]) == True
all([-1, 0, 1]) == False

參數

參數 說明
elements required
A 字串或元素集合。

不限

bool any(elements)

如果至少有一個元素的評估結果為 True,就會傳回 true。系統會使用 bool 函式將元素轉換為布林值。
any([-1, 0, 1]) == True
any([False, 0, ""]) == False

參數

參數 說明
elements required
A 字串或元素集合。

bool

bool bool(x=False)

bool 類型的建構函式。如果物件為 NoneFalse、空字串 ("")、數字 0 或空集合 (例如 ()[]),則會傳回 False。否則,會傳回 True

參數

參數 說明
x 預設為 False
要轉換的變數。

dict

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

根據選用的位置引數和選用關鍵字引數集合,建立字典。如果同一個鍵重複提供多次,系統會使用最後一個值。系統會將透過關鍵字引數提供的項目視為透過位置引數提供的項目之後。

參數

參數 說明
pairs 預設值為 []
Dict 或可列舉項目,其中每個元素的長度為 2 (鍵、值)。
kwargs required
Additional 字典項目。

dir

list dir(x)

傳回字串清單:參數物件的屬性和方法名稱。

參數

參數 說明
x 必要
要檢查的物件。

列舉

list enumerate(list, start=0)

傳回一組成對項目 (兩個元素的元組) 清單,其中包含索引 (int) 和輸入序列中的項目。
enumerate([24, 21, 84]) == [(0, 24), (1, 21), (2, 84)]

參數

參數 說明
list 必須
input sequence。
start int;預設值為 0
的起始索引。

失敗

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

導致執行作業失敗,並顯示錯誤訊息。

參數

參數 說明
msg 預設為 None
已淘汰:請改用位置引數。這個引數會做為隱含的領先位置引數。
attr 字串;或 None;預設為 None
。已淘汰。導致包含此字串的選用前置字串會加入錯誤訊息。
sep 字串; 預設為 " "
。 物件之間的分隔字串,預設為空格 (" ")。
args required
值清單,以 debugPrint 格式 (預設為 str) 顯示,並與 sep 連結 (預設為 " "),顯示在錯誤訊息中。

float

float float(x=unbound)

以浮點值傳回 x。
  • 如果 x 已是浮點值,float 會以原值傳回。
  • 如果 x 是布林值,float 會傳回 1.0 (代表 True) 和 0.0 (代表 False)。
  • 如果 x 是 int,float 會傳回最接近 x 的有限浮點值,如果值太大,則會傳回錯誤。
  • 如果 x 是字串,則必須是有效的浮點常值,或等於 (忽略大小寫) NaNInfInfinity,並可選擇在前方加上 +- 符號。
任何其他值都會導致錯誤。如果沒有引數,float() 會傳回 0.0。

參數

參數 說明
x 預設為 unbound
要轉換的值。

getattr

unknown getattr(x, name, default=unbound)

傳回指定名稱的結構體欄位 (如有)。如未指定,則會傳回 default (如果已指定) 或擲回錯誤。getattr(x, "foobar") 相當於 x.foobar
getattr(ctx.attr, "myattr")
getattr(ctx.attr, "myattr", "mydefault")

參數

參數 說明
x required
屬性存取的結構體。
name string; 必要
結構體屬性的名稱。
default 預設為 unbound
如果結構體沒有指定名稱的屬性,則會傳回預設值。

hasattr

bool hasattr(x, name)

如果物件 x 具有指定 name 的屬性或方法,則傳回 True,否則傳回 False。範例:
hasattr(ctx.attr, "myattr")

參數

參數 說明
x 必要
要檢查的物件。
name string; required
屬性名稱。

hash

int hash(value)

傳回字串的雜湊值。系統會使用與 Java 的 String.hashCode() 相同的演算法,以確定性方式計算此值,具體為:
s[0] * (31^(n-1)) + s[1] * (31^(n-2)) + ... + s[n-1]
目前不支援字串以外的值雜湊。

參數

參數 說明
value string; 必要
要進行雜湊運算的字串值。

int

int int(x, base=unbound)

以 int 值的形式傳回 x。
  • 如果 x 已是 int,int 會以原樣傳回。
  • 如果 x 是布林值,int 會傳回 1 代表 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 預設為 unbound
用於解讀字串值的底數,預設為 10。必須介於 2 和 36 (含) 之間,或設為 0 以便偵測 x 是否為整數運算式。如果值不是字串,則不得提供此參數。

len

int len(x)

傳回字串、序列 (例如清單或元組)、字典、集合或其他可枚舉項目的長度。

參數

參數 說明
x required
要回報的值長度。

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 可列舉項目; 預設為 []
要轉換的物件。

最高

unknown max(key=None, *args)

傳回所有指定引數中最大的一個。如果只提供一個位置引數,該引數必須是可枚舉的非空白項目。如果元素無法比較 (例如整數與字串),或是未提供引數,就會發生錯誤。
max(2, 5, 4) == 5
max([5, 6, 3]) == 6
max("two", "three", "four", key = len) =="three"  # the longest
max([1, -1, -2, 2], key = abs) == -2  # the first encountered with maximal key value

參數

參數 說明
key 可呼叫;或 None; 預設為 None
在比較前套用至每個元素的選用函式。
args required
要檢查的元素。

分鐘

unknown min(key=None, *args)

傳回所有指定引數中最小的一個。如果只提供一個位置引數,該引數必須是可枚舉的非空白值。如果元素無法比較 (例如整數與字串),或是未提供引數,就會發生錯誤。
min(2, 5, 4) == 2
min([5, 6, 3]) == 3
min("six", "three", "four", key = len) == "six"  # the shortest
min([2, -2, -1, 1], key = abs) == -1  # the first encountered with minimal key value

參數

參數 說明
key 可呼叫;或 None; 預設為 None
在比較前套用至每個元素的選用函式。
args required
要檢查的元素。

列印

None print(sep=" ", *args)

args 列印為偵錯輸出內容。前置字串為 "DEBUG",後面接著此呼叫的位置 (檔案和行號)。不過,我們並未指定將引數轉換為字串的確切方式,且這項方式隨時可能會變更。特別是,這可能與 str()repr() 所執行的格式不同 (且更為詳細)。

由於 print 會為使用者產生垃圾內容,因此不建議在正式版程式碼中使用 print。針對淘汰項目,請盡可能使用 fail() 產生嚴重錯誤。

參數

參數 說明
sep 字串; 預設為 " "
。 物件之間的分隔字串,預設為空格 (" ")。
args 必填
要列印的物件。

範圍

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

使用 step 遞增值,建立從 startstop 的項目清單。如果提供單一引數,項目範圍會從 0 到該元素。
range(4) == [0, 1, 2, 3]
range(3, 9, 2) == [3, 5, 7]
range(3, 0, -1) == [3, 2, 1]

參數

參數 說明
start_or_stop int; 必要
如果提供 stop,則為 start 元素的值;否則,stop 和實際開始值為 0
stop_or_none intNone;預設為 None
。第一個項目的選用索引,不會納入結果清單;清單產生作業會在 stop 之前停止。
step int;預設為 1
。增量值 (預設為 1)。可能為負值。

repr

string repr(x)

將任何物件轉換為字串表示法。這在偵錯時相當實用。
repr("ab") == '"ab"'

參數

參數 說明
x 必填
要轉換的物件。

已反轉

list reversed(sequence)

傳回新的未凍結清單,其中包含原始可枚舉序列的元素,並以相反順序排序。
reversed([3, 5, 4]) == [4, 5, 3]

參數

參數 說明
sequence iterable; required
要反轉的可枚舉序列 (例如清單)。

set

set set(elements=[])

Experimental。這個 API 仍在實驗階段,可能隨時變更。請勿依賴這項功能。您可以設定 --experimental_enable_starlark_set,將其設為實驗功能。

建立新的集合,可選擇初始化,以便包含指定可枚舉項目的元素。

參數

參數 說明
elements 預設為 []
Set、序列或字典。

sorted

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

傳回新的排序清單,其中包含提供可迴圈序列的所有元素。如果任何一組元素 x、y 無法使用 x < y 進行比較,就可能發生錯誤。除非反向引數為 True,否則元素會依遞增順序排序,如果是遞減順序,則會依遞減順序排序。排序穩定:相等的元素會保留原始相對順序。
sorted([3, 5, 4]) == [3, 4, 5]
sorted([3, 5, 4], reverse = True) == [5, 4, 3]
sorted(["two", "three", "four"], key = len) == ["two", "four", "three"]  # sort by length

參數

參數 說明
iterable iterable; required
要排序的可迭代序列。
key 可呼叫;或 None; 預設為 None
在比較前套用至每個元素的選用函式。
reverse bool; 預設為 False
。 以遞減順序傳回結果。

str

string str(x)

將任何物件轉換為字串。這對偵錯作業相當實用。
str("ab") == "ab"
str(8) == "8"

參數

參數 說明
x 必填
要轉換的物件。

元組

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 可列舉項目; 預設為 ()
要轉換的物件。

類型

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 required
The object to check type of.

zip

list zip(*args)

傳回 tuplelist,其中第 i 個元組包含各個引數序列或可枚舉項目的第 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 將必要的
清單壓縮成 ZIP 檔案。