1. 程式人生 > >PostgreSQL之函式和操作符

PostgreSQL之函式和操作符

一、邏輯操作符:

    常用的邏輯操作符有:ANDORNOT。其語義與其它程式語言中的邏輯操作符完全相同。

二、比較操作符:

    下面是PostgreSQL中提供的比較操作符列表:

操作符 描述
< 小於
> 大於
<= 小於或等於
>= 大於或等於
= 等於
!= 不等於

    比較操作符可以用於所有可以比較的資料型別。所有比較操作符都是雙目操作符,且返回boolean型別。除了比較操作符以外,我們還可以使用BETWEEN語句,如:
    a BETWEEN x AND y 等效於 a >= x AND a <= y    
    a NOT BETWEEN

x AND y 等效於 a < x OR a > y

三、 數學函式和操作符:

    下面是PostgreSQL中提供的數學操作符列表:

操作符 描述 例子 結果
+ 2 + 3 5
- 2 - 3 -1
* 2 * 3 6
/ 4 / 2 2
% 5 % 4 1
^ 2.0 ^ 3.0 8
|/ 平方根 |/ 25.0 5
||/ 立方根 ||/ 27.0 3
! 階乘 5 ! 120
!! 階乘 !! 5 120
@ 絕對值 @ -5.0 5
& 按位AND 91 & 15 11
| 按位OR 32 | 3 35
# 按位XOR 17 # 5 20
~ 按位NOT
~1 -2
<< 按位左移 1 << 4 16
>> 按位右移 8 >> 2 2

    按位操作符只能用於整數型別,而其它的操作符可以用於全部數值資料型別。按位操作符還可以用於位串型別bit和bit varying,

    下面是PostgreSQL中提供的數學函式列表,需要說明的是,這些函式中有許多都存在多種形式,區別只是引數型別不同。除非特別指明,任何特定形式的函式都返回和它的引數相同的資料型別。

函式 返回型別
描述 例子
結果
abs(x) 絕對值 abs(-17.4) 17.4
cbrt(double) 立方根 cbrt(27.0)
3
ceil(double/numeric) 不小於引數的最小的整數 ceil(-42.8) -42
degrees(double)
把弧度轉為角度 degrees(0.5) 28.6478897565412
exp(double/numeric) 自然指數 exp(1.0) 2.71828182845905
floor(double/numeric) 不大於引數的最大整數 floor(-42.8) -43
ln(double/numeric) 自然對數 ln(2.0) 0.693147180559945
log(double/numeric) 10為底的對數 log(100.0) 2
log(b numeric,x numeric) numeric指定底數的對數 log(2.0, 64.0) 6.0000000000
mod(y, x) 取餘數 mod(9,4) 1
pi()
double "π"常量 pi()
3.14159265358979
power(a double, b double) double 求a的b次冪 power(9.0, 3.0) 729
power(a numeric, b numeric) numeric 求a的b次冪 power(9.0, 3.0) 729
radians(double) double 把角度轉為弧度 radians(45.0) 0.785398163397448
random() double 0.0到1.0之間的隨機數值 random()
round(double/numeric) 圓整為最接近的整數 round(42.4) 42
round(v numeric, s int) numeric 圓整為s位小數數字 round(42.438,2) 42.44
sign(double/numeric) 引數的符號(-1,0,+1)
sign(-8.4) -1
sqrt(double/numeric) 平方根 sqrt(2.0) 1.4142135623731
trunc(double/numeric) 截斷(向零靠近) trunc(42.8) 42
trunc(v numeric, s int) numeric 截斷為s小數位置的數字 trunc(42.438,2) 42.43

三角函式列表:

函式 描述
acos(x) 反餘弦
asin(x) 反正弦
atan(x) 反正切
atan2(x, y) 正切 y/x 的反函式
cos(x) 餘弦
cot(x) 餘切
sin(x) 正弦
tan(x) 正切


四、字串函式和操作符:

    下面是PostgreSQL中提供的字串操作符列表:

函式 返回型別 描述 例子 結果
string || string text 字串連線 'Post' || 'greSQL' PostgreSQL
bit_length(string) int 字串裡二進位制位的個數 bit_length('jose') 32
char_length(string) int 字串中的字元個數 char_length('jose') 4
convert(string using conversion_name) text 使用指定的轉換名字改變編碼。 convert('PostgreSQL' using iso_8859_1_to_utf8) 'PostgreSQL'
lower(string) text 把字串轉化為小寫 lower('TOM') tom
octet_length(string) int 字串中的位元組數 octet_length('jose') 4
overlay(string placing string from int [for int]) text 替換子字串 overlay('Txxxxas' placing 'hom' from 2 for 4) Thomas
position(substring in string) int 指定的子字串的位置 position('om' in 'Thomas') 3
substring(string [from int] [for int]) text 抽取子字串 substring('Thomas' from 2 for 3) hom
substring(string from pattern) text 抽取匹配 POSIX 正則表示式的子字串 substring('Thomas' from '...$') mas
substring(string from pattern for escape) text 抽取匹配SQL正則表示式的子字串 substring('Thomas' from '%#"o_a#"_' for '#') oma
trim([leading | trailing | both] [characters] from string) text 從字串string的開頭/結尾/兩邊/ 刪除只包含characters(預設是一個空白)的最長的字串 trim(both 'x' from 'xTomxx') Tom
upper(string) text 把字串轉化為大寫。 upper('tom') TOM
ascii(text) int 引數第一個字元的ASCII碼 ascii('x') 120
btrim(string text [, characters text]) text 從string開頭和結尾刪除只包含在characters裡(預設是空白)的字元的最長字串 btrim('xyxtrimyyx','xy') trim
chr(int) text 給出ASCII碼的字元 chr(65) A
convert(string text, [src_encoding name,] dest_encoding name) text 把字串轉換為dest_encoding convert( 'text_in_utf8', 'UTF8', 'LATIN1') 以ISO 8859-1編碼表示的text_in_utf8
initcap(text) text 把每個單詞的第一個子母轉為大寫,其它的保留小寫。單詞是一系列字母數字組成的字元,用非字母數字分隔。 initcap('hi thomas') Hi Thomas
length(string text) int string中字元的數目 length('jose') 4
lpad(string text, length int [, fill text]) text 通過填充字元fill(預設時為空白),把string填充為長度length。 如果string已經比length長則將其截斷(在右邊)。 lpad('hi', 5, 'xy') xyxhi
ltrim(string text [, characters text]) text 從字串string的開頭刪除只包含characters(預設是一個空白)的最長的字串。 ltrim('zzzytrim','xyz') trim
md5(string text) text 計算給出string的MD5雜湊,以十六進位制返回結果。 md5('abc')
repeat(string text, number int) text 重複string number次。 repeat('Pg', 4) PgPgPgPg
replace(string text, from text, to text) text 把字串string裡出現地所有子字串from替換成子字串to。 replace('abcdefabcdef', 'cd', 'XX') abXXefabXXef
rpad(string text, length int [, fill text]) text 通過填充字元fill(預設時為空白),把string填充為長度length。如果string已經比length長則將其截斷。 rpad('hi', 5, 'xy') hixyx
rtrim(string text [, character text]) text 從字串string的結尾刪除只包含character(預設是個空白)的最長的字 rtrim('trimxxxx','x') trim
split_part(string text, delimiter text, field int) text 根據delimiter分隔string返回生成的第field個子字串(1 Base)。 split_part('[email protected][email protected]~ghi', '[email protected]~', 2) def
strpos(string, substring) text 宣告的子字串的位置。 strpos('high','ig') 2
substr(string, from [, count]) text 抽取子字串。 substr('alphabet', 3, 2) ph
to_ascii(text [, encoding]) text 把text從其它編碼轉換為ASCII。 to_ascii('Karel') Karel
to_hex(number int/bigint) text 把number轉換成其對應地十六進位制表現形式。 to_hex(9223372036854775807) 7fffffffffffffff
translate(string text, from text, to text) text 把在string中包含的任何匹配from中的字元的字元轉化為對應的在to中的字元。 translate('12345', '14', 'ax') a23x5


五、位串函式和操作符:

    對於型別bit和bit varying,除了常用的比較操作符之外,還可以使用以下列表中由PostgreSQL提供的位串函式和操作符,其中&、|和#的位串運算元必須等長。在移位的時候,保留原始的位串的的長度。

操作符 描述 例子 結果
|| 連線 B'10001' || B'011' 10001011
& 按位AND B'10001' & B'01101' 00001
| 按位OR B'10001' | B'01101' 11101
# 按位XOR B'10001' # B'01101' 11100
~ 按位NOT ~ B'10001' 01110
<< 按位左移 B'10001' << 3 01000
>> 按位右移 B'10001' >> 2 00100

    除了以上列表中提及的操作符之外,位串還可以使用字串函式:length, bit_length, octet_length, position, substring。此外,我們還可以在整數和bit之間來回轉換,如:
    MyTest=# SELECT 44::bit(10);
        bit
    ------------
     0000101100
    (1 row)
    MyTest=# SELECT 44::bit(3);
     bit
    -----
     100
    (1 row)
    MyTest=# SELECT cast(-44 as bit(12));
         bit
    --------------
     111111010100
    (1 row)
    MyTest=# SELECT '1110'::bit(4)::integer;
     int4
    ------

       14

六、模式匹配:

    PostgreSQL中提供了三種實現模式匹配的方法:SQL LIKE操作符,更近一些的SIMILAR TO操作符,和POSIX-風格正則表示式。
    1. LIKE:
    string LIKE pattern [ ESCAPE escape-character ]
    string NOT LIKE pattern [ ESCAPE escape-character ]
    每個pattern定義一個字串的集合。如果該string包含在pattern代表的字串集合裡,那麼LIKE表示式返回真。和我們想象的一樣,如果LIKE返回真,那麼NOT LIKE表示式返回假,反之亦然。在pattern裡的下劃線(_)代表匹配任何單個字元,而一個百分號(%)匹配任何零或更多字元,如:
    'abc' LIKE 'abc'     true
    'abc' LIKE 'a%'     true
    'abc' LIKE '_b_'    true
    'abc' LIKE 'c'        false  

    要匹配文字的下劃線或者百分號,而不是匹配其它字元,在pattern裡相應的字元必須前導轉義字元。預設的轉義字元是反斜槓,但是你可以用ESCAPE子句指定一個。要匹配轉義字元本身,寫兩個轉義字元。我們也可以通過寫成ESCAPE ''的方式有效地關閉轉義機制,此時,我們就不能關閉下劃線和百分號的特殊含義了。
    關鍵字ILIKE可以用於替換LIKE,令該匹配就當前的區域設定是大小寫無關的。這個特性不是SQL標準,是PostgreSQL的擴充套件。操作符~~等效於LIKE, 而~~*對應ILIKE。還有!~~!~~*操作符分別代表NOT LIKENOT ILIKE。所有這些操作符都是PostgreSQL特有的。

    2. SIMILAR TO正則表示式:
    SIMILAR TO根據模式是否匹配給定的字串而返回真或者假。
    string SIMILAR TO pattern [ESCAPE escape-character]
    string NOT SIMILAR TO pattern [ESCAPE escape-character]
    它和LIKE非常類似,支援LIKE的萬用字元('_''%')且保持其原意。除此之外,SIMILAR TO還支援一些自己獨有的元字元,如:    
    1). | 標識選擇(兩個候選之一)。
    2). * 表示重複前面的項零次或更多次。
    3). + 表示重複前面的項一次或更多次。
    4). 可以使用圓括弧()把項組合成一個邏輯項。
    5). 一個方括弧表示式[...]宣告一個字元表,就像POSIX正則表示式一樣。
    見如下示例:
    'abc' SIMILAR TO 'abc'           true
    'abc' SIMILAR TO 'a'              false
    'abc' SIMILAR TO '%(b|d)%'  true
    'abc' SIMILAR TO '(b|c)%'     false

    帶三個引數的substring,substring(string from pattern for escape-character),提供了一個從字串中抽取一個匹配SQL正則表示式模式的子字串的函式。和SIMILAR TO一樣,宣告的模式必須匹配整個資料串,否則函式失效並返回NULL。為了標識在成功的時候應該返回的模式部分,模式必須出現後跟雙引號(")的兩個轉義字元。匹配這兩個標記之間的模式的字串將被返回,如:
    MyTest=# SELECT substring('foobar' from '%#"o_b#"%' FOR '#'); --這裡#是轉義符,雙引號內的模式是返回部分。
     substring
    -----------
     oob
    (1 row)
    MyTest=# SELECT substring('foobar' from '#"o_b#"%' FOR '#');  --foobar不能完全匹配後面的模式,因此返回NULL。
     substring
    -----------

    (1 row)

七、資料型別格式化函式:

    PostgreSQL格式化函式提供一套有效的工具用於把各種資料型別(日期/時間、integer、floating point和numeric)轉換成格式化的字串以及反過來從格式化的字串轉換成指定的資料型別。下面列出了這些函式,它們都遵循一個公共的呼叫習慣:第一個引數是待格式化的值,而第二個是定義輸出或輸出格式的模板。

函式 返回型別 描述 例子
to_char(timestamp, text) text 把時間戳轉換成字串 to_char(current_timestamp, 'HH12:MI:SS')
to_char(interval, text) text 把時間間隔轉為字串 to_char(interval '15h 2m 12s', 'HH24:MI:SS')
to_char(int, text) text 把整數轉換成字串 to_char(125, '999')
to_char(double precision, text) text 把實數/雙精度數轉換成字串 to_char(125.8::real, '999D9')
to_char(numeric, text) text 把numeric轉換成字串 to_char(-125.8, '999D99S')
to_date(text, text) date 把字串轉換成日期 to_date('05 Dec 2000', 'DD Mon YYYY')
to_timestamp(text, text) timestamp 把字串轉換成時間戳 to_timestamp('05 Dec 2000', 'DD Mon YYYY')
to_timestamp(double) timestamp 把UNIX紀元轉換成時間戳 to_timestamp(200120400)
to_number(text, text) numeric 把字串轉換成numeric to_number('12,454.8-', '99G999D9S')

     1. 用於日期/時間格式化的模式:

模式 描述
HH 一天的小時數(01-12)
HH12 一天的小時數(01-12)
HH24 一天的小時數(00-23)
MI 分鐘(00-59)
SS 秒(00-59)
MS 毫秒(000-999)
US 微秒(000000-999999)
AM 正午標識(大寫)
Y,YYY 帶逗號的年(4和更多位)
YYYY 年(4和更多位)
YYY 年的後三位
YY 年的後兩位
Y 年的最後一位
MONTH 全長大寫月份名(空白填充為9字元)
Month 全長混合大小寫月份名(空白填充為9字元)
month 全長小寫月份名(空白填充為9字元)
MON 大寫縮寫月份名(3字元)
Mon 縮寫混合大小寫月份名(3字元)
mon 小寫縮寫月份名(3字元)
MM 月份號(01-12)
DAY 全長大寫日期名(空白填充為9字元)
Day 全長混合大小寫日期名(空白填充為9字元)
day 全長小寫日期名(空白填充為9字元)
DY 縮寫大寫日期名(3字元)
Dy 縮寫混合大小寫日期名(3字元)
dy 縮寫小寫日期名(3字元)
DDD 一年裡的日子(001-366)
DD 一個月裡的日子(01-31)
D 一週裡的日子(1-7;週日是1)
W 一個月裡的週數(1-5)(第一週從該月第一天開始)
WW 一年裡的週數(1-53)(第一週從該年的第一天開始)

     2. 用於數值格式化的模板模式:

模式 描述
9 帶有指定數值位數的值
0 帶前導零的值
.(句點) 小數點
,(逗號) 分組(千)分隔符
PR 尖括號內負值
S 帶符號的數值
L 貨幣符號
D 小數點
G 分組分隔符
MI 在指明的位置的負號(如果數字 < 0)
PL 在指明的位置的正號(如果數字 > 0)
SG 在指明的位置的正/負號


八、時間/日期函式和操作符:

    1. 下面是PostgreSQL中支援的時間/日期操作符的列表:

操作符 例子 結果
+ date '2001-09-28' + integer '7' date '2001-10-05'
+ date '2001-09-28' + interval '1 hour' timestamp '2001-09-28 01:00'
+ date '2001-09-28' + time '03:00' timestamp '2001-09-28 03:00'
+ interval '1 day' + interval '1 hour' interval '1 day 01:00'
+ timestamp '2001-09-28 01:00' + interval '23 hours' timestamp '2001-09-29 00:00'
+ time '01:00' + interval '3 hours' time '04:00'
- - interval '23 hours' interval '-23:00'
- date '2001-10-01' - date '2001-09-28' integer '3'
- date '2001-10-01' - integer '7' date '2001-09-24'
- date '2001-09-28' - interval '1 hour' timestamp '2001-09-27 23:00'
- time '05:00' - time '03:00' interval '02:00'
- time '05:00' - interval '2 hours' time '03:00'
- timestamp '2001-09-28 23:00' - interval '23 hours' timestamp '2001-09-28 00:00'
- interval '1 day' - interval '1 hour' interval '23:00'
- timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00' interval '1 day 15:00'
* interval '1 hour' * double precision '3.5' interval '03:30'
/ interval '1 hour' / double precision '1.5' interval '00:40'

    2. 日期/時間函式:

函式 返回型別 描述 例子 結果
age(timestamp, timestamp) interval 減去引數,生成一個使用年、月的"符號化"的結果 age('2001-04-10', timestamp '1957-06-13') 43 years 9 mons 27 days
age(timestamp) interval 從current_date減去得到的數值 age(timestamp '1957-06-13') 43 years 8 mons 3 days
current_date date 今天的日期
current_time time 現在的時間
current_timestamp timestamp 日期和時間
date_part(text, timestamp) double 獲取子域(等效於extract) date_part('hour', timestamp '2001-02-16 20:38:40') 20
date_part(text, interval) double 獲取子域(等效於extract) date_part('month', interval '2 years 3 months') 3
date_trunc(text, timestamp) timestamp 截斷成指定的精度 date_trunc('hour', timestamp '2001-02-16 20:38:40') 2001-02-16 20:00:00+00
extract(field from timestamp) double 獲取子域 extract(hour from timestamp '2001-02-16 20:38:40') 20
extract(field from interval) double 獲取子域 extract(month from interval '2 years 3 months') 3
localtime time 今日的時間
localtimestamp timestamp 日期和時間
now() timestamp 當前的日期和時間(等效於 current_timestamp)
timeofday() text 當前日期和時間

    3. EXTRACT,date_part函式支援的field:

描述 例子 結果
CENTURY 世紀 EXTRACT(CENTURY FROM TIMESTAMP '2000-12-16 12:21:13'); 20
DAY (月分)裡的日期域(1-31) EXTRACT(DAY from TIMESTAMP '2001-02-16 20:38:40'); 16
DECADE 年份域除以10 EXTRACT(DECADE from TIMESTAMP '2001-02-16 20:38:40'); 200
DOW 每週的星期號(0-6;星期天是0) (僅用於timestamp) EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40'); 5
DOY 一年的第幾天(1 -365/366) (僅用於 timestamp) EXTRACT(DOY from TIMESTAMP '2001-02-16 20:38:40'); 47
HOUR 小時域(0-23) EXTRACT(HOUR from TIMESTAMP '2001-02-16 20:38:40'); 20
MICROSECONDS 秒域,包括小數部分,乘以 1,000,000。 EXTRACT(MICROSECONDS from TIME '17:12:28.5'); 28500000

相關推薦

PostgreSQL函式操作符

一、邏輯操作符:     常用的邏輯操作符有:AND、OR和NOT。其語義與其它程式語言中的邏輯操作符完全相同。二、比較操作符:     下面是PostgreSQL中提供的比較操作符列表: 操作符 描述 < 小於 > 大於 <= 小於或等於 >= 大

【資料庫】【SQL高階】*MySQL資料庫函式操作符”(數值函式部分#常用#:方便查閱使用)#資料庫SQL知識彙總#(四)-2018.11.27- #轉載#

四、數值函式 4.1 算數操作符 DIV整數除法。 類似於 FLOOR(),然而使用BIGINT 演算法也是可靠的。 4.2 數學函式 若發生錯誤,所有數學函式會返回 NULL 。 ABS(X):返回X 的絕對值。該函式支援使用BIGINT值。

PostgreSql函式操作符時間函式

PostgreSql常用的時間函式 1.時間間隔age函式 函式描述:計算兩個日期之間相隔多少天,單個引數時表示與當前日期(current_date)相比 引數:age(timestamp,timestamp),age(timestamp) 返回值:interval,兩個

PostgreSQL常用字串函式操作符

一、邏輯操作符:     常用的邏輯操作符有:AND、OR和NOT。其語義與其它程式語言中的邏輯操作符完全相同。二、比較操作符:     下面是PostgreSQL中提供的比較操作符列表: 操作符 描述 < 小於 > 大於 <= 小於或等於 >

PostgresqlVACUUMVACUUM FULL對比

其它 一次 能夠 cat 定期 規劃 相對 得到 如果 VACUUM命令存在兩種形式,VACUUM和VACUUM FULL,它們之間的區別見如下表格: 無VACUUM VACUUM VACUUM FULL 刪除大量數據之後 只是將刪除數據

Mysql-12章-函式操作符 (翻譯+理解)

文章目錄 12.1 函式和操作符一覽   表示式可以在SQL語句中的某些地方使用,SELECT中的ORDER BY和HAVING子句內, SELECT, DELETE,UPDATE這些語句中的WHERE內,SET語句內。 表示式可以使用文字值,列值,N

ES6系列_8函式陣列

  1.物件的函式解構 ES6為我們提供了這樣的解構賦值使在前後端分離時,後端返回來JSON格式的資料,前端可以直接把這個JSON格式資料當作引數,傳遞到函式內部進行處理。比如: let json = { a:'es6', b:'es5' } function fun

postgresql常用函式操作符及型別轉換等

一、邏輯操作符: 常用的邏輯操作符有:AND、OR和NOT。其語義與其它程式語言中的邏輯操作符完全相同。 二、比較操作符: 下面是PostgreSQL中提供的比較操作符列表: 操作符 描述 ‘<’ 小於 ‘&

PL/SQL字串宣告、字串函式操作符例項原始碼說明

            PL/SQL字串實際上是一個可選的尺寸規格字元序列。字元可以是數字,字母,空白,特殊字元或全部的組合。 PL/SQL提供了三種類型的字串:固定長度字串:在這樣的字串,程式設計師指定的長度,同時宣告該字串。該字串是右填充空格以達到指定的長度。變長字串:在

JS函式事件

JavaScript 建立動態頁面。事件是可以被 JavaScript 偵測到的行為。 網頁中的每個元素都可以產生某些可以觸發 JavaScript 函式或程式的事件。比如說,當用戶單擊按鈕或者提交表單資料時,就發生一個滑鼠單擊(onclick)事件,需要瀏覽器做出處理,返回給使用者一個結果。

postgresql (PG)   數組函數操作符

pg 數組 函數 操作符描述例子結果=等於ARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3]t<>不等於ARRAY[1,2,3] <> ARRAY[1,2,4]t<小於ARRAY[1,2,3] < ARRAY[1,2,4]t>

C ++ -- 操作符

C語言 ++ -- 我們在 C 語言中會經常見到 ++ 和 -- 操作符,筆試題中也經常見到。下我們就來分析這兩個操作符。 ++ 和 -- 操作符對應兩條匯編指令,前置時:變量自增(減)1後取變量值;後置時:取變量值後變量自增(減)1。 下來我們來看個示

C # ## 操作符

C語言 # 運算符 ## 運算符 在 C 語言中還有 # 和 ## 這種操作符的存在,只是不經常見,那麽我們今天就來講下它們的用法。 A、 # 運算符用於在預處理期將宏參數轉換為字符串,它的轉換作用是在預處理期完成的,因此只在宏定義中有效。編譯器不知道 # 的轉換作用

C++ Essentials lower_bound upper_bound 的比較函式格式不同

第一次注意到這個問題。 cppreference 上的條目: lower_bound upper_bound C++17 草案 N4659 lower_bound template<class ForwardIterator, class T> ForwardIterator lower_

少說話多寫程式碼Python學習040——類02(類的函式方法 )

在類裡定義函式時的self引數,其實是方法和函式的區別。在類裡定義方法時,一般都在方法里加一個預設的引數,可以是,a,c,d的。但是約定俗成就統一叫self。self表示的是 這個類的當前例項,一個類有多個例項,那麼它屬於自己所屬於的例項,不會存在例項寧缺的self會指向例項陳皮皮。 這裡比價特

跟老齊學Python私有函式專有方法

在任何語言中,都會規定某些物件(屬性、方法、函式、類等)只能夠在某個範圍內訪問,出了這個範圍就不能訪問了。這是“公”、“私”之分。此外,還會專門為某些特殊的東西指定一些特殊表示,比如類的名字就不能用class,def等,這就是保留字。除了保留字,python中還為類的名字做了某些特殊準備,就是“專有

c++友元函式友元類

c++友元函式一些見解 1、為什麼要引入友元函式:在實現類之間資料共享時,減少系統開銷,提高效率 具體來說:為了使其他類的成員函式直接訪問該類的私有變數 即:允許外面的類或函式去訪問類的私有變數和保護變數,從而使兩個類共享同一函式 優點:能夠提高效率,表達簡單、清晰

python全棧開發匿名函式遞迴函式

python全棧開發,匿名函式,遞迴函式 匿名函式 lambda函式也叫匿名函式,即函式沒有具體的名稱。是為了解決一些功能很簡單需求而設計的一句話函式。如下: #這段程式碼defcalc(n):returnn**nprint(calc(10))#換成匿名函式calc =lambdan:n

c++ 入門深入探討拷貝函式賦值運算子

在c++入門之深入探討類的一些行為時,說明了拷貝函式即複製建構函式運用於如下場景: 物件作為函式的引數,以值傳遞的方式傳給函式。  物件作為函式的返回值,以值的方式從函式返回 使用一個物件給另一個物件初始化 針對上述的三種情況,實際上很多時候,我們都會用到;如果我們採用系統預設的拷貝函式

Kotlin語法變數函式的定義

/** * 方法的定義, a, b為變數名 * fun 方法名(變數名: 變數型別): 返回值型別 */ fun sum(a: Int, b: Int): Int { return a + b } /** * 當表示式作為函式體的時候, 可以省去返回值型別 * 由函式自己推斷