bif在python 內建函式 BIF

2021-10-11 22:23:55 字數 1537 閱讀 1730

內建函式 (bif)

內建函式是指那些出於某種需求而內建到 erlang 虛擬機器中的函式。內建函式常常實現那些在 erlang 中不容易實現或者在 erlang 中實現效率不高的函式。某些內建函式也可以只用函式名就呼叫,因為這些函式是由於預設屬於 erlang 模組。例如,下面呼叫內建函式 trunc 等價於呼叫 erlang:trunc。

如下所示,判斷乙個是否為閏年。如果可以被 400 整除,則為閏年。為了判斷,先將年份除以 400,再用 trunc 函式移去小數部分。然後,再將結果乘以 400 判斷是否得到最初的值。例如,以 2004 年為例:

2004 / 400 = 5.01

trunc(5.01) = 5

5 * 400 = 2000

2000 年與 2004 年不同,2004 不能被 400 整除。而對於 2000 來說,

2000 / 400 = 5.0

trunc(5.0) = 5

5 * 400 = 2000

所以,2000 年為閏年。接下來兩個 trunc 測試例子判斷年份是否可以被 100 或者 4 整除。 首先第乙個 if 語句返回 leap 或者 not_leap,該值儲存在變數 leap 中的。這個變數會被用到後面 feb 的條件測試中,用於計算二月份有多少天。

這個例子演示了 trunc 的使用方法。其實,在 erlang 中可以使用內建函式 rem 來求得餘數,這樣會簡單很多。示例如下:

74> 2004 rem 400.

所以下面的這段**也可以改寫:

trunc(year / 400) * 400 == year ->

leap;

可以被改寫成:

year rem 400 == 0 ->

leap;

erlang 中除了 trunc 之外,還有很多的內建函式。其中只有一部分可以用在 guard 中,並且你不可以在 guard 中使用自定義的函式 ( 參考 guard 序列 )。(高階話題:這不能保證 guard 沒有***)。讓我們在 shell 中測試一些內建函式:

75> trunc(5.6).

76> round(5.6).

77> length([a,b,c,d]).

78> float(5).

5.079> is_atom(hello).

true

80> is_atom("hello").

false

81> is_tuple(}).

true

82> is_tuple([paris, ]).

false

所有的這些函式都可以用到 guard 條件測試中。下現這些函式不可以用在 guard 條件測試中:

83> atom_to_list(hello).

"hello"

84> list_to_atom("goodbye").

goodbye

85> integer_to_list(22).

"22"

這三個內建函式可以完成型別的轉換。要想在 erlang 系統中(非 erlang 虛擬機器中)實現這樣的轉換幾乎是不可能的。

python的35個常見內建函式 BIF

bif dir builtins print len bif 152個內建函式 35個常用內建函式 1.abs 求絕對值 模 a 1 b 3 4j print abs a print abs b 2.bin 把整數轉為二進位制串表示形式 c 16 print bin c 3.complex real...

Python 序列常用BIF 內建方法

python中有四種內建的資料結構,即列表 元組 字典 集合,其實都屬於 序列。list literable 把乙個可迭代的物件轉換為列表 tuple iterable 把乙個可迭代的物件轉換為元祖 str obj 把obj物件轉換為字串 len sub 返回sub引數的長度 max 序列或者引數集...

python重寫內建函式 python 內建函式

說明 zip 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 號操作符,可以將元組解壓為列表。語法 zip iterable1,iterable2,引數 iterable 乙個或多...