1. 程式人生 > 實用技巧 >springboot 非同步郵件服務

springboot 非同步郵件服務

python內建了一系列的常用函式,以便於我們使用,python英文官方文件詳細說明:點選檢視, 內建函式總結如下:

Built-in Functions

abs()

delattr()

hash()

memoryview()

set()

all()

dict()

help()

min()

setattr()

any()

dir()

hex()

next()

slice()

ascii()

divmod()

id()

object()

sorted()

bin()

enumerate()

input()

oct()

staticmethod()

bool()

eval()

int()

open()

str()

breakpoint()

exec()

isinstance()

ord()

sum()

bytearray()

filter()

issubclass()

pow()

super()

bytes()

float()

iter()

print()

tuple()

callable()

format()

len()

property()

type()

chr()

frozenset()

list()

range()

vars()

classmethod()

getattr()

locals()

repr()

zip()

compile()

globals()

map()

reversed()

__import__()

complex()

hasattr()

max()

round()

abs()  獲取絕對值

abs(-10) 
# 10

abs(10) 
# 10

abs(0) 
# 0

a = -10
a.__abs__()
# 10

all()  接受一個迭代器,如果迭代器的所有元素都為真,那麼返回True,否則返回False

tmp_1 = ['python',123]
all(tmp_1)
# True

tmp_2 = []
all(tmp_2)
# True

tmp_3 = [0]
all(tmp_3)
# False
any()  接受一個迭代器,如果迭代器裡有一個元素為真,那麼返回True,否則返回False
ascii()  呼叫物件的__repr__()方法,獲得該方法的返回值
bin(), oct(), hex()   三個函式功能為:將十進位制數分別轉換為2/8/16進位制
bool()  測試一個物件是True還是False bytes()  將一個字串轉換成位元組型別
s = 'python'
x = bytes(s, encoding='utf-8')
print(x)
# b'python'

print(b'python')
# b'python'

a = ''
s = bytes(a, encoding='utf-8')
print(s)
# b'\xe7\x8e\x8b'

str()  將字元型別/數值型別等轉換為字串型別

str(b'\xe7\x8e\x8b', encoding='utf-8')  # 位元組轉換為字串
# '王'
str(1)   # 整數轉換為字串
# '1'

callable()  判斷物件是否可以被呼叫,能被呼叫的物件就是一個callables物件,比如函式和帶有__call__()的例項

callable(max)
# True

callable([1, 2, 3])
# False

callable(None)
# False

callable('str')
# False

char(),ord()  檢視十進位制數對應的ASCII字元/檢視某個ASCII對應的十進位制數

print(chr(98))
# b

print(ord('\x00'))
# 0

classmethod()  用來指定一個方法為類的方法,由類直接呼叫執行,只有一個cls引數,執行雷的方法時,自動將呼叫該方法的類賦值給cls.沒有此引數指定的類的方法為例項方法

class Province:
    country = "中國"
    
    def __init__(self, name):
        self.name = name

    @classmethod
    def show(cls):  # 類方法,由類呼叫,最少要有一個引數cls,呼叫的時候這個引數不用傳值,自動將類名賦值給cls
        print(cls)
s=Province('zack')
s.show()

# <class '__main__.Province'>

complie()  將字串編譯成python能識別或可以執行的程式碼,也可以將文字讀成字串再編譯

1 compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
2 將source編譯為程式碼或者AST物件。程式碼物件能過通過exec語句來執行或者eval()進行求值。
3 引數source:字串或者AST(abstract syntax trees)物件。
4 引數filename:程式碼檔名稱,如果不是從檔案讀取程式碼則傳遞一些可辨認的值。
5 引數model:指定編譯程式碼的種類。可以指定'exec', 'eval', 'single'。
6 引數flag和dont_inherit:這兩個引數為可選引數。

s  = "print('helloworld')"
r = compile(s, "<string>", "exec")
print(r)
# <code object <module> at 0x000001C648038390, file "<string>", line 1>

complex()
1 建立一個值為real + imag * j的複數或者轉化一個字串或數為複數。如果第一個引數是字串,則不需要指定第二個引數。
2 引數real:int,long,float或字串。
3 引數imag:int,long,float。

delattr()  刪除物件的屬性


dict()  建立資料字典

a = dict()  # 空字典
print(a)
# {}

b = dict(one = 1, two =2)
print(b)
# {'one': 1, 'two': 2}

c = dict({'one':1 ,'two':2})
print(c)
# {'one': 1, 'two': 2}

dir()  不帶引數時返回當前範圍內的變數,方法和定義的型別列表,帶引數時返回引數的屬性,方法列表

print(dir())
# ['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'li', 'li1', 'li2', 'li_1']
print(dir(list))
# ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

divmod()  分別取商和餘數

a,b=divmod(20,6)
print(a,b)
# (3, 2)

enumerate()  返回一個可以列舉的物件,該物件的next()方法將返回一個元組

test = ['a', 'b', 'c']
for k,v in enumerate(test):
    print(k,v)

# 0 a
# 1 b
# 2 c

eval()  將字串str當成有效的表示式來求值並返回計算結果

s = "1+2*3"

print(type(s))
# <class 'str'>

print(eval(s))
# 7

exec()  執行字串或complie方法編譯過的字串,沒有返回值

filter()  過濾器,構造一個序列,等價於[ item for item in iterables if function(item)],在函式中設定過濾條件,逐一迴圈迭代器中的元素,將返回值為True時的元素留下,形成一個filter型別資料

1 filter(function, iterable)
2 引數function:返回值為True或False的函式,可以為None。
3 引數iterable:序列或可迭代物件。

float()  將一個字串或整數轉換為浮點數

format()  格式化輸出字串,format(value, format_spec)實質上是呼叫了value的__format__(format_spec)方法

frozenset()  建立一個不可修改的集合
1 frozenset([iterable])
2 set和frozenset最本質的區別是前者是可變的,後者是不可變的。當集合物件會被改變時(例如刪除,新增元素),只能使用set,
3 一般來說使用fronzet的地方都可以使用set。
4 引數iterable:可迭代物件。

getattr()  獲取物件的屬性
1 getattr(object, name [, defalut])
2 獲取物件object名為name的特性,如果object不包含名為name的特性,將會丟擲AttributeError異常;如果不包含名為name的特性
3 且提供default引數,將返回default。
4 引數object:物件
5 引數name:物件的特性名
6 引數default:預設返回值

globals()  返回一個描述當前全域性變數的字典

hasattr()
1 hasattr(object,name)
2 判斷物件object是否包含名為name的特性(hasattr是通過呼叫getattr(object,name))是否丟擲異常來實現的。
3 引數object:物件
4 引數name:特性名稱

hash()  雜湊值
1 hash(object)
2 如果物件object為雜湊表型別,返回物件object的雜湊值。雜湊值為整數,在字典查詢中,雜湊值用於快遞比價字典的鍵。
3 兩個數值如果相等,則雜湊值也相等。

help()  返回物件的幫助文件


id()  返回物件的記憶體地址

input()  獲取使用者輸入內容

int()  將一個字串或數值轉換為一個普通整數

1 int([x[,radix]])
2 如果引數是字串,那麼它可能包含符號和小數點。引數radix表示轉換的基數(預設是10進位制)。
3 它可以是[2,36]範圍內的值,或者0。如果是0,系統將根據字串內容來解析。
4 如果提供了引數radix,但引數x並不是一個字串,將丟擲TypeError異常;
5 否則,引數x必須是數值(普通整數,長整數,浮點數)。通過捨去小數點來轉換浮點數。
6 如果超出了普通整數的表示範圍,一個長整數被返回。
7 如果沒有提供引數,函式返回0。

isinstance()  檢查物件是否是類的物件,返回True或False
1 isinstance(obj, cls)
2 檢查obj是否是類cls的物件, 返回True 或 False

issubclass()  檢查一個類是否是另一個類的子類。返回True或False
1 issubclass(sub, super)
2 檢查sub類是否是super類的派生類(子類)。返回True 或 False

iter()
1 iter(o[, sentinel])
2 返回一個iterator物件。該函式對於第一個引數的解析依賴於第二個引數。
3 如果沒有提供第二個引數,引數o必須是一個集合物件,支援遍歷功能(__iter__()方法)或支援序列功能(__getitem__()方法),
4 引數為整數,從零開始。如果不支援這兩種功能,將處罰TypeError異常。
5 如果提供了第二個引數,引數o必須是一個可呼叫物件。在這種情況下建立一個iterator物件,每次呼叫iterator的next()方法來無
6 引數的呼叫o,如果返回值等於引數sentinel,觸發StopIteration異常,否則將返回該值。

len()  返回物件長度,引數可以是序列型別(字串,元組或列表)或對映型別(如字典)

list()  列表建構函式

1 list([iterable])
2 list的建構函式。引數iterable是可選的,它可以是序列,支援編譯的容器物件,或iterator物件。
3 該函式建立一個元素值,順序與引數iterable一致的列表。如果引數iterable是一個列表,將建立
4 列表的一個拷貝並返回,就像語句iterables[:]。

locals()  列印當前可用的區域性變數的字典
1 不要修改locals()返回的字典中的內容;改變可能不會影響解析器對區域性變數的使用。
2 在函式體內呼叫locals(),返回的是自由變數。修改自由變數不會影響解析器對變數的使用。
3 不能在類區域內返回自由變數。

map()
1 map(function, iterable,...)
2 對於引數iterable中的每個元素都應用fuction函式,並將結果作為列表返回。
3 如果有多個iterable引數,那麼fuction函式必須接收多個引數,這些iterable中相同索引處的元素將並行的作為function函式的引數。
4 如果一個iterable中元素的個數比其他少,那麼將用None來擴充套件改iterable使元素個數一致。
5 如果有多個iterable且function為None,map()將返回由元組組成的列表,每個元組包含所有iterable中對應索引處值。
6 引數iterable必須是一個序列或任何可遍歷物件,函式返回的往往是一個列表(list)。

max()  返回給定元素裡最大值
1 max(iterable [,args...][, key])
2 如果只提供iterable引數,函式返回可遍歷物件(如:字串,元組或列表)中最大的非空元素。
3 如果提供多個引數,那麼返回值最大的那個引數。
4 可選引數key是單引數的排序函式。
5 如果提供key引數,必須是以命名的形式,如:max(a, b, c, key = fun)

meoryview()

min()  返回給定元素裡最小值
1 min(iterable [,args...][, key])
2 如果只提供iterable引數,函式返回可遍歷物件(如:字串,元組或列表)中最小的非空元素。
3 如果提供多個引數,那麼返回值最小的那個引數。
4 可選引數key是單引數的排序函式。
5 如果提供key引數,必須是以命名的形式,如:max(a, b, c, key = fun)

46. next()  返回一個可迭代資料結構(如列表)中的下一項


object()
1 獲取一個新的,無特性(geatureless)物件。Object是所有類的基類。它提供的方法將在所有的型別例項中共享。
2 該函式時2.2.版本新增,2.3版本之後,該函式不接受任何引數。

open()  開啟檔案
1 open(filename [, mode [, bufsize]])
2 開啟一個檔案,返回一個file物件。 如果檔案無法開啟,將處罰IOError異常。
3 應該使用open()來代替直接使用file型別的建構函式開啟檔案。
4 引數filename表示將要被開啟的檔案的路徑字串;
5 引數mode表示開啟的模式,最常用的模式有:'r'表示讀文字,'w'表示寫文字檔案,'a'表示在檔案中追加。
6 Mode的預設值是'r'。
7 當操作的是二進位制檔案時,只要在模式值上新增'b'。這樣提高了程式的可移植性。
8 可選引數bufsize定義了檔案緩衝區的大小。0表示不緩衝;1表示行緩衝;任何其他正數表示使用該大小的緩衝區;
9 負數表示使用系統預設緩衝區大小,對於tty裝置它往往是行緩衝,而對於其他檔案往往完全緩衝。如果引數值被省卻。
10 使用系統預設值。

pow()  冪函式
1 r = pow(2, 10) # 2的10次方
2 print(r)
3
4 # 輸出
5 1024

print()  輸出函式
1 python2中的print語句被python3中的print()函式取代。
2 如何限制print的預設換行:
3 1. python2版本下,在print輸出的最後加一個逗號','
4 2. python3.4以後,print(value, ...,sep='',end='\n',file=sys.stdout,flush=False),將end設為空即可。

property()

range()  根據需要生成一個指定範圍的數字,可以提供你需要的控制來迭代指定的次數
1 用於建立包含連續算術值的列表(list)。常用於for迴圈。引數必須是普通整數。
2 引數step預設值為1,引數start的預設值為0。
3 全引數呼叫該函式將返回一個普通整數列表。
4 step 可以是正整數或者負整數。不可以為0,否則將處罰ValueError異常。
5 range(3)代表0,1,2.等價於range(0,3)
6 >>> range(0,10,2) #第一個引數是起始數,第二個是終止數(不包含這個),第三個數步數
7 >>>[0,2,4,6,8]

repr()  將任意值轉換為字串,供計時器讀取的形式
1 repr(object)
2 返回一個物件的字串表示。有時可以使用這個函式來訪問操作。
3 對於許多型別來說,repr()嘗試返回一個字串,eval()方法可以使用該字串產生物件;
4 否則用尖括號括起來的,包含類名稱和其他二外資訊的字串被返回。

reversed()   反轉,逆序物件
1 reversed(seq)
2 返回一個逆序的iterator物件。引數seq必須是一個包含__reversed__()方法的物件或支援序列操作(__len__()和__getitem__())
3 該函式是2.4中新增的

round()  四捨五入
1 round(x [, n])
2 對引數x的第n+1位小數進行四捨五入,返回一個小數位數為n的浮點數。
3 引數n的預設值是0。結果是一個浮點數。如round(0.5)結果為1.0
4 >>> round(4,6)
5 4
6 >>> round(5,6)
7 5

set()

setattr()  與getattr()相對應

slice()  切片功能

sorted()  排序

1 >>> sorted([36,6,-12,9,-22]) 列表排序
2 [-22, -12, 6, 9, 36]
3 >>> sorted([36,6,-12,9,-22],key=abs) 高階函式,以絕對值大小排序
4 [6, 9, -12, -22, 36]
5 >>> sorted(['bob', 'about', 'Zoo', 'Credit']) 字串排序,按照ASCII的大小排序
6 ['Credit', 'Zoo', 'about', 'bob']
7 如果需要排序的是一個元組,則需要使用引數key,也就是關鍵字。
8 >>> a = [('b',2), ('a',1), ('c',0)]
9 >>> list(sorted(a,key=lambda x:x[1])) 按照元組第二個元素排序
10 [('c', 0), ('a', 1), ('b', 2)]
11 >>> list(sorted(a,key=lambda x:x[0])) 按照元組第一個元素排序
12 [('a', 1), ('b', 2), ('c', 0)]
13 >>> sorted(['bob', 'about', 'Zoo', 'Credit'],key=str.lower) 忽略大小寫排序
14 ['about', 'bob', 'Credit', 'Zoo']
15 >>> sorted(['bob', 'about', 'Zoo', 'Credit'],key=str.lower,reverse=True) 反向排序
16 ['Zoo', 'Credit', 'bob', 'about']

staticmethod()

str()  字串建構函式

sum()  求和

super()  呼叫父類的方法

tuple()  元組建構函式

type()  顯示物件所屬的型別

vars()  

zip()  將物件逐一配對
1 list_1 = [1,2,3]
2 list_2 = ['a','b','c']
3 s = zip(list_1,list_2)
4 print(list(s))
5
6 執行結果:
7
8 [(1, 'a'), (2, 'b'), (3, 'c')]

1 a = [(1,),(2,),(3,)]
2 r = zip(*a)
3 print(list(r))
4 執行結果:
5 [(1, 2, 3)]
6 print(list(r)[0])
7 執行結果:
8 (1, 2, 3)

__import__()