python內置函數你了解多少?

python內置函數

https://www.runoob.com/python/python-built-in-functions.html

abs():絕對值函數

描述:返回函數的絕對值

使用:ads(x)

x 是數字,返回的是x的絕對值

divmod():返回除數餘數函數

描述:把除數和餘數結合起來,返回一個包含商和餘數的元祖(a//b, a%b)

語法:divmod(a, b)

a,b都是數字,返回的是(a//b, a%b)

python2.3版本之前不允許處理複數

input():接收輸入值函數

描述:用於接收輸入的數據

python不同版本input函數的分別

Python3.x 中 去掉了raw_input()函數。input() 函數接受一個標準輸入數據,返回為 string 類型。

python2.x 中 raw_input() 將所有輸入作為字符串看待,返回字符串類型。 input() 在輸入數字時,它返回所輸入的數字的類型( int, float );輸入字符串時要求加"",返回字符串類型。

語法:x = input([prompt])

prompt是提示信息,可填可不填

open():打開文件函數

描述:用於打開一個文件,創建一個file對象

語法:open(name[, mode[, buffering]])

name:包含文件名的字符串值

mode : mode 決定了打開文件的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個參數是非強制的,默認文件訪問模式為只讀®

r 只讀;rb 二進位讀;r+/w+讀寫; rb+/wb+二進位讀寫;w 只寫;wb 二進位寫

a 追加;ab 二進位追加;a+/ab+ 文件存在則追加,文件不存在則讀寫

buffering : 如果 buffering 的值被設為 0,就不會有寄存。如果 buffering 的值取 1,訪問文件時會寄存行。如果將 buffering 的值設為大於 1 的整數,表明了這就是的寄存區的緩衝大小。如果取負值,寄存區的緩衝大小則為系統默認。

文件對象方法

  • file.read([size]):size 未指定則返回整個文件,如果文件大小 >2 倍內存則有問題,f.read()讀到文件尾時返回""(空字串)。
  • file.readline():返回一行。
  • file.readlines([size]) :返回包含size行的列表, size 未指定則返回全部行。
  • for line in f: print line :通過疊代器訪問。
  • f.write(「hello\n」):如果要寫入字符串以外的數據,先將他轉換為字符串。
  • f.tell():返回一個整數,表示當前文件指針的位置(就是到文件頭的比特數)。
  • f.seek(偏移量,[起始位置]):用來移動文件指針。
  • 偏移量: 單位為比特,可正可負
  • 起始位置: 0 - 文件頭, 默認值; 1 - 當前位置; 2 - 文件尾
  • f.close() 關閉文件

staticmethod() :返回函數靜態方法

描述:返回函數的靜態方法

語法:staticmethod(function)

參數是一個函數,可不填

all() :判斷參數是否都是True

描述:用於判斷給定的可疊代參數 iterable 中的所有元素是否都為 TRUE,如果是返回 True,否則返回 FALSE。(元素除了是 0、空列表、空元祖、None、False 外都算 True。)

語法:all(iterable)

iterable – 元組或列表,返回布爾值

enumerate(): 將可疊代對象組合成索引序列

描述:用於將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。Python 2.3. 以上版本可用,2.6 添加 start 參數。

語法:enumerate(sequence, [start=0])

sequence – 一個序列、疊代器或其他支持疊代對象。

start – 下標起始位置。

返回 enumerate(枚舉) 對象。

int() :將字符串或數字轉化為整型

描述:用於將一個字符串或數字轉化為整數類型

語法:int(x, base = 10)

x – 字符串或數字,

base – 進位數,默認十進位。

ord():返回參數的ASCLL碼或Unicode 數值

描述:ord() 函數是 chr() 函數(對於8位的ASCII字符串)或 unichr() 函數(對於Unicode對象)的配對函數,它以一個字符(長度為1的字符串)作為參數,返回對應的 ASCII 數值,或者 Unicode 數值,如果所給的 Unicode 字符超出了你的 Python 定義範圍,則會引發一個 TypeError 的異常。

語法:ord©

參數c是字符,返回的是十進位整數

str() :轉化為字符串

描述:將對象轉化為方便閱讀的字符串格式

語法:str(objrct)

object是一個對象,返回值是一個字符串

any():判定參數是否都是False

描述:any() 函數用於判斷給定的可疊代參數 iterable 是否全部為 False,則返回 False,如果有一個為 True,則返回 True。(元素除了是 0、空、FALSE 外都算 TRUE。)

語法:any(iterable)

iterable – 元組或列表。

和all()分別

all()函數是參數只要有一個為false,就返回false,否則返回true

any()函數是參數只要有一個為turn,就返回true,否則返回false

eval():返回表達式的計算結果

描述:eval() 函數用來執行一個字符串表達式,並返回表達式的值。

語法:eval(expression[, globals[, locals]])

expression – 表達式。

globals – 變量作用域,全局命名空間,如果被提供,則必須是一個字典對象。

locals – 變量作用域,局部命名空間,如果被提供,可以是任何映射對象。

isinstance():判斷變量是否是該類型

描述:isinstance() 函數來判斷一個對象是否是一個已知的類型,類似 type()。

語法:isinstance(object, classinfo)

object – 實例對象

classinfo – 可以是直接或間接類名、基本類型或者由它們組成的元組

返回布爾值

isinstance()和type()函數的分別

type() 不會認為子類是一種父類類型,不考慮繼承關係

isinstance() 會認為子類是一種父類類型,考慮繼承關係

pow():冪計算

描述:方法返回方法返回x的y次方的值。

語法:

通過導入math模塊,

import math

math.pow(x,y)

內置的pow函數

pow(x, y[, z])

分別:pow() 通過內置的方法直接調用,內置方法會把參數作為整型,而 math 模塊則會把參數轉換為 float

sum():求和

描述:對可疊代對象進行求和,返回計算結果

語法:sum(iterable[, start])

iterable – 可疊代對象,如:列表、元組、集合。

start – 指定相加的參數,如果沒有設置這個值,默認為0。

basestring():

描述:basestring() 方法是 str 和 unicode 的超類(父類),也是抽象類,因此不能被調用和實例化,但可以被用來判斷一個對象是否為 str 或者 unicode 的實例,isinstance(obj, basestring) 等價於 isinstance(obj, (str, unicode))。

語法:basestring() ,沒有參數和返回值

execfile():執行文件

描述:execfile() 函數可以用來執行一個文件。(可用於執行一個python文件,返回該文件的執行結果)

語法:execfile(filename[, globals[, locals]])

filename – 文件名。

globals – 變量作用域,全局命名空間,如果被提供,則必須是一個字典對象。

locals – 變量作用域,局部命名空間,如果被提供,可以是任何映射對象。

返回表達式執行結果。

issubclass() :判斷參數 class 是否是類型參數 classinfo 的子類

描述:issubclass() 方法用於判斷參數 class 是否是類型參數 classinfo 的子類

語法:issubclass(class, classinfo)

class – 類。

classinfo – 類

如果 class 是 classinfo 的子類返回 True,否則返回 False

print():輸出函數

描述:print() 方法用於列印輸出,最常見的一個函數,print 在 Python3.x 是一個函數,但在 Python2.x 版本不是一個函數,只是一個關鍵字。

語法:print(*objects, sep=』 『, end=』\n』, file=sys.stdout)

objects – 複數,表示可以一次輸出多個對象。輸出多個對象時,需要用 , 分隔。

sep – 用來間隔多個對象,默認值是一個空格。

end – 用來設定以什麼結尾。默認值是換行符 \n,我們可以換成其他字符串。

file – 要寫入的文件對象。

super():調用父類的方法

描述:super() 函數是用於調用父類(超類)的一個方法。

super 是用來解決多重繼承問題的,直接用類名調用父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查找順序(MRO)、重複調用(鑽石繼承)等種種問題。

MRO 就是類的方法解析順序表, 其實也就是繼承父類方法時的順序表。

語法:super(type[, object-or-type])

type – 類。

object-or-type – 類,一般是 self

Python3.x 和 Python2.x 的一個分別是: Python 3 可以使用直接使用 super().xxx 代替 super(Class, self).xxx

bin():返回整數的二進位表示

描述:bin() 返回一個整數 int 或者長整數 long int 的二進位表示

語法:bin(x)

x – int 或者 long int 數字

返回二進位字符串

file():創建file對象

描述:file() 函數用於創建一個 file 對象,它有一個別名叫 open(),更形象一些,它們是內置函數。參數是以字符串的形式傳遞的。

語法:file(name[, mode[, buffering]])

name – 文件名

mode – 打開模式

buffering – 0 表示不緩衝,如果為 1 表示進行行緩衝,大於 1 為緩衝區大小。

返回文件對象

iter():用來生成疊代器

描述:iter() 函數用來生成疊代器

語法:iter(object[, sentinel])

object – 支持疊代的集合對象。

sentinel – 如果傳遞了第二個參數,則參數 object 必須是一個可調用的對象(如,函數),此時,iter 創建了一個疊代器對象,每次調用這個疊代器對象的__next__()方法時,都會調用 object。

返回疊代器對象

舉例

lst = [1, 2, 3]

for i in iter(lst):

print(i)

property():在新式類中返回屬性值。

描述:property() 函數的作用是在新式類中返回屬性值。

語法:property([fget[, fset[, fdel[, doc]]]])

fget – 獲取屬性值的函數

fset – 設置屬性值的函數

fdel – 刪除屬性值函數

doc – 屬性描述信息

返回新式類屬性

tuple():轉化為元祖

描述: tuple() 函數將列錶轉換為元組

語法:tuple(seq)

seq – 要轉換為元組的序列(針對字典,會返回字典的key組成的tuple)

返回元祖

bool():轉化為布爾型

描述:bool() 函數用於將給定參數轉換為布爾類型,如果沒有參數,返回 False。

bool 是 int 的子類。

語法:bool([x])

x – 要進行轉換的參數

返回 Ture 或 False

filter():過濾函數

描述:filter() 函數用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表

該接收兩個參數,第一個為函數,第二個為序列,序列的每個元素作為參數傳遞給函數進行判,然後返回 True 或 False,最後將返回 True 的元素放到新列表中

語法:filter(function, iterable)

function – 判斷函數。

iterable – 可疊代對象

Pyhton2.7 返回列表,Python3.x 返回疊代器對象

len():返回長度

描述:len() 方法返回對象(字符、列表、元組等)長度或項目個數。

語法:len( s )

range():生成整數列表

描述:range() 函數可創建一個整數列表,一般用在 for 循環中

語法:range(start, stop[, step])

start: 計數從 start 開始。默認是從 0 開始。例如range(5)等價於range(0, 5);

stop: 計數到 stop 結束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5

step:步長,默認為1。例如:range(0, 5) 等價於 range(0, 5, 1)

即左包含右不包含

tpye():返回對象類型

描述:type() 函數如果你只有第一個參數則返回對象的類型,三個參數返回新的類型對象。

語法:type(object)

返回對象的類型

語法:type(name, bases, dict)

name – 類的名稱。

bases – 基類的元組。

dict – 字典,類內定義的命名空間變量。

返回新的類型對象

bytearray() :返回一個新字節數組

描述:bytearray() 方法返回一個新字節數組。這個數組裡的元素是可變的,並且每個元素的值範圍: 0 <= x < 256。

語法:bytearray([source[, encoding[, errors]]])

如果 source 為整數,則返回一個長度為 source 的初始化數組;

如果 source 為字符串,則按照指定的 encoding 將字符串轉換為字節序列;

如果 source 為可疊代類型,則元素必須為[0 ,255] 中的整數;

如果 source 為與 buffer 接口一致的對象,則此對象也可以被用於初始化 bytearray。

如果沒有輸入任何參數,默認就是初始化數組為0個元素。

float():轉化為浮點數

描述:用於將整數和字符串轉換成浮點數

語法:float([x])

list():轉化為列表

描述:list() 方法用於將元組轉換為列表。

語法:list( tup )

raw_input() :獲取控制台的輸入

描述:raw_input() 用來獲取控制台的輸入

將所有輸入作為字符串看待,返回字符串類型

Python3.x 中 去掉了raw_input()函數

input() 和 raw_input() 這兩個函數均能接收 字符串 ,但 raw_input() 直接讀取控制台的輸入(任何類型的輸入它都可以接收)。而對於 input() ,它希望能夠讀取一個合法的 python 表達式,即你輸入字符串的時候必須使用引號將它括起來,否則它會引發一個 SyntaxError 。

語法:raw_input([prompt])

prompt: 可選,字符串,可作為一個提示語

unichr():返回unicode字符

描述:unichr() 函數 和 chr()函數功能基本一樣, 只不過是返回 unicode 的字符

語法:unichr(i)

i – 可以是10進位也可以是16進位的形式的數字。

返回 unicode 的字符

callable() :檢查對象是否可調用

描述:callable() 函數用於檢查一個對象是否是可調用的。如果返回 True,object 仍然可能調用失敗;但如果返回 False,調用對象 object 絕對不會成功。

對於函數、方法、lambda 函式、 類以及實現了 __call__方法的類實例, 它都返回 True。

語法:callable(object)

object – 對象

返回布爾值

format(): 格式化函數

描述:Python2.6 開始,新增了一種格式化字符串的函數 str.format(),它增強了字符串格式化的功能。

基本語法是通過 {} 和 : 來代替以前的 % 。

format 函數可以接受不限個參數,位置可以不按順序。

也可以設置參數,也可以傳入參數

locals() :返回當前位置的全部局部變量

描述:locals() 函數會以字典類型返回當前位置的全部局部變量

對於函數, 方法, lambda 函式, 類, 以及實現了 __call__方法的類實例, 它都返回 True。

語法:locals()

沒有參數

返回字典類型的局部變量

reduce() :對參數元素進行累積

描述:reduce() 函數會對參數序列中元素進行累積,函數將一個數據集合(鍊表,元組等)中的所有數據進行下列操作:用傳給 reduce 中的函數 function(有兩個參數)先對集合中的第 1、2 個元素進行操作,得到的結果再與第三個數據用 function 函數運算,最後得到一個結果

語法:reduce(function, iterable[, initializer])

function – 函數,有兩個參數

iterable – 可疊代對象

initializer – 可選,初始參數

返回函數計算結果

chr():返回參數對應的字符

描述:chr() 用一個範圍在 range(256)內的(就是0~255)整數作參數,返回一個對應的字符

語法: chr(i)

i – 可以是10進位也可以是16進位的形式的數字

返回值是當前整數對應的 ASCII 字符

frozenset() 返回凍結的集合

描述:frozenset() 返回一個凍結的集合,凍結後集合不能再添加或刪除任何元素

語法:frozenset([iterable])

iterable – 可疊代的對象,比如列表、字典、元組等等

返回新的 frozenset 對象,如果不提供任何參數,默認會生成空集合

long() :轉換為長整型

描述:long() 函數將數字或字符串轉換為一個長整型

語法:long(x, base=10)

x – 字符串或數字

base – 可選,進位數,默認十進位

reload():重新載入之前載入的模塊

描述:reload() 用於重新載入之前載入的模塊

語法:reload(module)

module – 模塊對象

返回模塊對象

vars() :對象的屬性和屬性值的字典對象

描述:vars() 函數返回對象object的屬性和屬性值的字典對象

語法:vars([object])

object – 對象

返回對象object的屬性和屬性值的字典對象,如果沒有參數,就列印當前調用位置的屬性和屬性值 類似 locals()

classmethod 修飾符

描述:classmethod 修飾符對應的函數不需要實例化,不需要 self 參數,但第一個參數需要是表示自身類的 cls 參數,可以來調用類的屬性,類的方法,實例化對象等

語法:@classmethod

沒有參數

返回函數的類方法

getattr() :返回對象屬性值

描述:getattr() 函數用於返回一個對象屬性值

語法:getattr(object, name[, default])

object – 對象。

name – 字符串,對象屬性。

default – 默認返回值,如果不提供該參數,在沒有對應屬性時,將觸發 AttributeError

返回對象屬性值

map():對指定序列做映射

描述:map() 會根據提供的函數對指定序列做映射。第一個參數 function 以參數序列中的每一個元素調用 function 函數,返回包含每次 function 函數返回值的新列表。

語法:map(function, iterable, …)

function – 函數

iterable – 一個或多個序列

Python 2.x 返回列表,Python 3.x 返回疊代器

repe():轉化為字符串

描述:將對象轉化為供解釋器讀取的形式

語法:repr(object)

object – 對象

返回一個對象的 string 格式

xrange():生成器

描述:xrange() 函數用法與 range 完全相同,所不同的是生成的不是一個數組,而是一個生成器。

即range()返回的一次生成全部,xrange()是用一個生成一個,會比較省內存

語法:xrange(stop)  xrange(start, stop[, step])

start: 計數從 start 開始。默認是從 0 開始。例如 xrange(5) 等價於 xrange(0, 5)

stop: 計數到 stop 結束,但不包括 stop。例如:xrange(0, 5) 是 [0, 1, 2, 3, 4] 沒有 5

step:步長,默認為1。例如:xrange(0, 5) 等價於 xrange(0, 5, 1)

cmp():比較對象大小

描述:cmp(x,y) 函數用於比較2個對象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1

語法:cmp( x, y )

x,y都是數值表達式

返回-1,0,1

globals():返回當前位置的全部全局變量

描述:globals() 函數會以字典類型返回當前位置的全部全局變量

語法:globals()

和locals()用法一致

max() :返回給定參數的最大值

描述:max() 方法返回給定參數的最大值,參數可以為序列

語法:max( x, y, z, … )

x, y, z, …數值表達式

返回一個最大值

reverse():反轉列表

描述:reverse() 函數用於反向列表中元素

語法:list.reverse()

該方法沒有返回值,但是會對列表的元素進行反向排序

zip():壓縮(將元素對應壓縮成列表嵌套元祖)

描述:zip() 函數用於將可疊代的對象作為參數,將對象中對應的元素打包成一個個元組,然後返回由這些元組組成的列表。

如果各個疊代器的元素個數不一致,則返回列表長度與最短的對象相同,利用 * 號操作符,可以將元組解壓為列表。

zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中為了減少內存,zip() 返回的是一個對象。如需展示列表,需手動 list() 轉換。

語法:zip([iterable, …])

iterabl – 一個或多個疊代器

返回元組列表

與 zip 相反,*zipped 可理解為解壓,返回二維矩陣式

zip(*zipped)

compile() :將字符串編譯為字節代碼

描述:compile() 函數將一個字符串編譯為字節代碼。

語法:compile(source, filename, mode[, flags[, dont_inherit]])

source – 字符串或者AST(Abstract Syntax Trees)對象。。

filename – 代碼文件名稱,如果不是從文件讀取代碼則傳遞一些可辨認的值。

mode – 指定編譯代碼的種類。可以指定為 exec, eval, single。

flags – 變量作用域,局部命名空間,如果被提供,可以是任何映射對象。。

flags和dont_inherit是用來控制編譯源碼時的標誌

返回表達式執行結果

hasattr() :判斷對象是否包含對應的屬性

描述:hasattr() 函數用於判斷對象是否包含對應的屬性

語法:hasattr(object, name)

object – 對象

name – 字符串,屬性名

如果對象有該屬性返回 True,否則返回 False

memoryview() :返回給定參數的內存查看對象(Momory view)

描述:memoryview() 函數返回給定參數的內存查看對象(Momory view)

所謂內存查看對象,是指對支持緩衝區協議的數據進行包裝,在不需要複製對象基礎上允許Python代碼訪問

語法:memoryview(obj)

obj – 對象

返回元組列表

round() :浮點數的四捨五入值

描述:round() 方法返回浮點數x的四捨五入值

語法:round( x [, n] )

x --數值

n – 保留小數點位數,默認0

返回浮點數x的四捨五入值

####__import__():動態加載類和函數

描述:__import__() 函數用於動態加載類和函數 。如果一個模塊經常變化就可以使用 __import__() 來動態載入。

語法:__import__(name[, globals[, locals[, fromlist[, level]]]])

name – 模塊名

返回元祖列表

complex():創建/轉化複數

描述:complex() 函數用於創建一個值為 real + imag * j 的複數或者轉化一個字符串或數為複數。如果第一個參數為字符串,則不需要指定第二個參數

語法:class complex([real[, imag]])

real – int, long, float或字符串

imag – int, long, float

hash():獲取哈希值

描述:hash() 用於獲取取一個對象(字符串或者數值等)的哈希值

語法:hash(object)

返回哈希值

min() :返回最小值

描述:min() 方法返回給定參數的最小值,參數可以為序列

語法:min( x, y, z, … )

返回給定參數的最小值

set() :創建一個無序不重複元素集(set:組)

描述:set() 函數創建一個無序不重複元素集,可進行關係測試,刪除重複數據,還可以計算交集、差集、並集等。

語法:set([iterable])

delattr():刪除屬性

描述:用於刪除屬性。delattr(x,『foobar』)相等於del x.foobar

語法:delattr(object, name)

object – 對象

name – 必須是對象的屬性

help() :查看函數或模塊用途的詳細說明

描述:help() 函數用於查看函數或模塊用途的詳細說明

語法:help([object])

object – 對象

返回對象幫助信息

next():用於疊代器的返回數值

描述:返回疊代器的下一個項目

語法:next(iterator[, default])

iterator – 可疊代對象

default – 可選,用於設置在沒有下一個元素時返回該默認值,如果不設置,又沒有下一個元素則會觸發 StopIteration 異常

setattr() :設置屬性值

描述:setattr() 函數對應函數 getattr(),用於設置屬性值,該屬性不一定是存在的

語法:setattr(object, name, value)

object – 對象

name – 字符串,對象屬性

value – 屬性值

dict() :創建字典

描述:dict() 函數用於創建一個字典

語法:

class dict(**kwarg)

class dict(mapping, **kwarg)

class dict(iterable, **kwarg)

參數

**kwargs – 關鍵字

mapping – 元素的容器

iterable – 可疊代對象

hex() :將10進位整數轉換成16進位

描述:hex() 函數用於將10進位整數轉換成16進位,以字符串形式表示

語法:hex(x)

slice() :實現切片對象

描述:slice() 函數實現切片對象,主要用在切片操作函數裡的參數傳遞

語法:

class slice(stop)

class slice(start, stop[, step])

參數

start – 起始位置

stop – 結束位置

step – 間距

返回一個切片對象

dir():

描述:dir() 函數不帶參數時,返回當前範圍內的變量、方法和定義的類型列表;帶參數時,返回參數的屬性、方法列表。如果參數包含方法__dir__(),該方法將被調用。如果參數不包含__dir__(),該方法將最大限度地收集參數信息

語法:dir([object])

object – 對象、變量、類型

返回模塊的屬性列表

id():獲取對象內存地址

描述:id() 函數用於獲取對象的內存地址

語法:id([object])

object – 對象

返回對象的內存地址

oct() :將整數轉換成8進位字符串

描述:oct() 函數將一個整數轉換成8進位字符串

語法:oct(x)

sorted() :排序

描述:sorted() 函數對所有可疊代的對象進行排序操作

語法:sorted(iterable[, cmp[, key[, reverse]]])

iterable – 可疊代對象

cmp – 比較的函數,這個具有兩個參數,參數的值都是從可疊代對象中取出,此函數必須遵守的規則為,大於則返回1,小於則返回-1,等於則返回0

key – 主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自於可疊代對象中,指定可疊代對象中的一個元素來進行排序

reverse – 排序規則,reverse = True 降序 , reverse = False 升序(默認)

返回重新排序的列表

sort 與 sorted 分別

sort 是應用在 list 上的方法,sorted 可以對所有可疊代的對象進行排序操作

list 的 sort 方法返回的是對已經存在的列表進行操作,無返回值,而內建函數 sorted 方法返回的是一個新的 list,而不是在原來的基礎上進行的操作

exec 內置語句

描述:exec 執行儲存在字符串或文件中的Python語句,相比於 eval,exec可以執行更複雜的 Python 代碼

需要說明的是在 Python2 中exec不是函數,而是一個內置語句(statement),但是Python 2中有一個 execfile() 函數。可以理解為 Python 3 把 exec 這個 statement 和 execfile() 函數的功能夠整合到一個新的 exec() 函數中去了

語法:exec obj

obj – 要執行的表達式

exec 返回值永遠為 None

聲明:文章觀點僅代表作者本人,PTTZH僅提供信息發布平台存儲空間服務。
喔!快樂的時光竟然這麼快就過⋯