Python 數字
Python 支援四種不同的數值類型:
- 整型(Int) - 通常被稱為是整型或整數,是正或負整數,不帶小數點。
- 長整型(long integers) - 無限大小的整數,整數最後是一個大寫或小寫的L。
- 浮點型(floating point real values) - 浮點型由整數部分與小數部分組成,浮點型也可以使用科學計數法表示(2.5e2 = 2.5 x 102 = 250)
- 複數( (complex numbers)) - 複數的虛部以字母J 或 j結尾 。如:2+3i
int | long | float | complex |
---|---|---|---|
10 | 51924361L | 0.0 | 3.14j |
100 | -0x19323L | 15.20 | 45.j |
-786 | 0122L | -21.9 | 9.322e-36j |
080 | 0xDEFABCECBDAECBFBAEl | 32.3+e18 | .876j |
-0490 | 535633629843L | -90. | -.6545+0J |
-0x260 | -052318172735L | -32.54e100 | 3e+26J |
0x69 | -4721885298529L | 70.2-E12 | 4.53e-7j |
- 長整型也可以使用小寫"L",但是還是建議您使用大寫"L",避免與數字"1"混淆。Python使用"L"來顯示長整型。
- Python還支援複數,複數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型
Python數字類型轉換
int(x [,base ]) 将x轉換為一個整數
long(x [,base ]) 将x轉換為一個長整數
float(x ) 将x轉換到一個浮點數
complex(real [,imag ]) 建立一個複數
str(x ) 将對象 x 轉換為字元串
repr(x ) 将對象 x 轉換為表達式字元串
eval(str ) 用來計算在字元串中的有效Python表達式,并傳回一個對象
tuple(s ) 将序列 s 轉換為一個元組
list(s ) 将序列 s 轉換為一個清單
chr(x ) 将一個整數轉換為一個字元
unichr(x ) 将一個整數轉換為Unicode字元
ord(x ) 将一個字元轉換為它的整數值
hex(x ) 将一個整數轉換為一個十六進制字元串
oct(x ) 将一個整數轉換為一個八進制字元串
Python數學函數
函數 | 傳回值 ( 描述 ) |
---|---|
abs(x) | 傳回數字的絕對值,如abs(-10) 傳回 10 |
ceil(x) | 傳回數字的上入整數,如math.ceil(4.1) 傳回 5 |
cmp(x, y) | 如果 x < y 傳回 -1, 如果 x == y 傳回 0, 如果 x > y 傳回 1 |
exp(x) | 傳回e的x次幂(ex),如math.exp(1) 傳回2.718281828459045 |
fabs(x) | 傳回數字的絕對值,如math.fabs(-10) 傳回10.0 |
floor(x) | 傳回數字的下舍整數,如math.floor(4.9)傳回 4 |
log(x) | 如math.log(math.e)傳回1.0,math.log(100,10)傳回2.0 |
log10(x) | 傳回以10為基數的x的對數,如math.log10(100)傳回 2.0 |
max(x1, x2,...) | 傳回給定參數的最大值,參數可以為序列。 |
min(x1, x2,...) | 傳回給定參數的最小值,參數可以為序列。 |
modf(x) | 傳回x的整數部分與小數部分,兩部分的數值符号與x相同,整數部分以浮點型表示。 |
pow(x, y) | x**y 運算後的值。 |
round(x [,n]) | 傳回浮點數x的四舍五入值,如給出n值,則代表舍入到小數點後的位數。 |
sqrt(x) | 傳回數字x的平方根,數字可以為負數,傳回類型為實數,如math.sqrt(4)傳回 2+0j |
Python随機數函數
随機數可以用于數學,遊戲,安全等領域中,還經常被嵌入到算法中,用以提高算法效率,并提高程式的安全性。
Python包含以下常用随機數函數:
函數 | 描述 |
---|---|
choice(seq) | 從序列的元素中随機挑選一個元素,比如random.choice(range(10)),從0到9中随機挑選一個整數。 |
randrange ([start,] stop [,step]) | 從指定範圍内,按指定基數遞增的集合中擷取一個随機數,基數預設值為1 |
random() | 随機生成下一個實數,它在[0,1)範圍内。 |
seed([x]) | 改變随機數生成器的種子seed。如果你不了解其原理,你不必特别去設定seed,Python會幫你選擇seed。 |
shuffle(lst) | 将序列的所有元素随機排序 |
uniform(x, y) | 随機生成下一個實數,它在[x,y]範圍内。 |
Python三角函數
Python包括以下三角函數:
函數 | 描述 |
---|---|
acos(x) | 傳回x的反餘弦弧度值。 |
asin(x) | 傳回x的反正弦弧度值。 |
atan(x) | 傳回x的反正切弧度值。 |
atan2(y, x) | 傳回給定的 X 及 Y 坐标值的反正切值。 |
cos(x) | 傳回x的弧度的餘弦值。 |
hypot(x, y) | 傳回歐幾裡德範數 sqrt(x*x + y*y)。 |
sin(x) | 傳回的x弧度的正弦值。 |
tan(x) | 傳回x弧度的正切值。 |
degrees(x) | 将弧度轉換為角度,如degrees(math.pi/2) , 傳回90.0 |
radians(x) | 将角度轉換為弧度 |
Python數學常量
常量 | 描述 |
---|---|
pi | 數學常量 pi(圓周率,一般以π來表示) |
e | 數學常量 e,e即自然常數(自然常數)。 |
Python 字元串
Python不支援單字元類型,單字元也在Python也是作為一個字元串使用。
Python轉義字元
在需要在字元中使用特殊字元時,python用反斜杠(\)轉義字元。如下表:
轉義字元 | 描述 |
---|---|
\(在行尾時) | 續行符 |
\\ | 反斜杠符号 |
\' | 單引号 |
\" | 雙引号 |
\a | 響鈴 |
\b | 倒退(Backspace) |
\e | 轉義 |
\000 | 空 |
\n | 換行 |
\v | 縱向制表符 |
\t | 橫向制表符 |
\r | 回車 |
\f | 換頁 |
\oyy | 八進制數,yy代表的字元,例如:\o12代表換行 |
\xyy | 十六進制數,yy代表的字元,例如:\x0a代表換行 |
\other | 其它的字元以普通格式輸出 |
Python字元串運算符
下表執行個體變量a值為字元串"Hello",b變量值為"Python":
操作符 | 描述 | 執行個體 |
---|---|---|
+ | 字元串連接配接 | a + b 輸出結果: HelloPython |
* | 重複輸出字元串 | a*2 輸出結果:HelloHello |
[] | 通過索引擷取字元串中字元 | a[1] 輸出結果 e |
[ : ] | 截取字元串中的一部分 | a[1:4] 輸出結果ell |
in | 成員運算符 - 如果字元串中包含給定的字元傳回 True | H in a 輸出結果 1 |
not in | 成員運算符 - 如果字元串中不包含給定的字元傳回 True | M not in a 輸出結果 1 |
r/R | 原始字元串 - 原始字元串:所有的字元串都是直接按照字面的意思來使用,沒有轉義特殊或不能列印的字元。 原始字元串除在字元串的第一個引号前加上字母"r"(可以大小寫)以外,與普通字元串有着幾乎完全相同的文法。 | print r'\n' prints \n 和 print R'\n'prints \n |
% | 格式字元串 | 情看一下章節 |
Python字元串格式化
Python 支援格式化字元串的輸出 。盡管這樣可能會用到非常複雜的表達式,但最基本的用法是将一個值插入到一個有字元串格式符 %s 的字元串中。
在 Python 中,字元串格式化使用與 C 中 sprintf 函數一樣的文法。
如下執行個體:
#!/usr/bin/python
print "My name is %s and weight is %d kg!" % ('Zara', 21)
以上執行個體輸出結果:
My name is Zara and weight is 21 kg!
python字元串格式化符号:
<tbody
符 号 | 描述 |
---|---|
%c | 格式化字元及其ASCII碼 |
%s | 格式化字元串 |
%d | 格式化整數 |
%u | 格式化無符号整型 |
%o | 格式化無符号八進制數 |
%x | 格式化無符号十六進制數 |
%X | 格式化無符号十六進制數(大寫) |
%f | 格式化浮點數字,可指定小數點後的精度 |
%e | 用科學計數法格式化浮點數 |
%E | 作用同%e,用科學計數法格式化浮點數 |
%g | %f和%e的簡寫 |
%G | %f 和 %E 的簡寫 |
%p | 用十六進制數格式化變量的位址 |
格式化操作符輔助指令:
符号 | 功能 |
---|---|
* | 定義寬度或者小數點精度 |
- | 用做左對齊 |
+ | 在正數前面顯示加号( + ) |
<sp> | 在正數前面顯示空格 |
# | 在八進制數前面顯示零('0'),在十六進制前面顯示'0x'或者'0X'(取決于用的是'x'還是'X') |
顯示的數字前面填充'0'而不是預設的空格 | |
% | '%%'輸出一個單一的'%' |
(var) | 映射變量(字典參數) |
m.n. | m 是顯示的最小總寬度,n 是小數點後的位數(如果可用的話) |
Python三引号(triple quotes)
python中三引号可以将複雜的字元串進行複制:
python三引号允許一個字元串跨多行,字元串中可以包含換行符、制表符以及其他特殊字元。
三引号的文法是一對連續的單引号或者雙引号(通常都是成對的用)。
>>> hi = '''hi
there'''
>>> hi # repr()
'hi\nthere'
>>> print hi # str()
hi
there
三引号讓程式員從引号和特殊字元串的泥潭裡面解脫出來,自始至終保持一小塊字元串的格式是所謂的WYSIWYG(所見即所得)格式的。
一個典型的用例是,當你需要一塊HTML或者SQL時,這時用字元串組合,特殊字元串轉義将會非常的繁瑣。
errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (
login VARCHAR(8),
uid INTEGER,
prid INTEGER)
''')
Unicode 字元串
Python 中定義一個 Unicode 字元串和定義一個普通字元串一樣簡單:
>>> u'Hello World !'
u'Hello World !'
引号前小寫的"u"表示這裡建立的是一個 Unicode 字元串。如果你想加入一個特殊字元,可以使用 Python 的 Unicode-Escape 編碼。如下例所示:
>>> u'Hello\u0020World !'
u'Hello World !'
被替換的 \u0020 辨別表示在給定位置插入編碼值為 0x0020 的 Unicode 字元(空格符)。
python的字元串内建函數
字元串方法是從python1.6到2.0慢慢加進來的——它們也被加到了Jython中。
這些方法實作了string子產品的大部分方法,如下表所示列出了目前字元串内建支援的方法,所有的方法都包含了對Unicode的支援,有一些甚至是專門用于Unicode的。
方法 | 描述 |
---|---|
string.capitalize() | 把字元串的第一個字元大寫 |
string.center(width) | 傳回一個原字元串居中,并使用空格填充至長度 width 的新字元串 |
string.count(str, beg=0, end=len(string)) | 傳回 str 在 string 裡面出現的次數,如果 beg 或者 end 指定則傳回指定範圍内 str 出現的次數 |
string.decode(encoding='UTF-8', errors='strict') | 以 encoding 指定的編碼格式解碼 string,如果出錯預設報一個 ValueError 的 異 常 , 除 非 errors 指 定 的 是 'ignore' 或 者'replace' |
string.encode(encoding='UTF-8', errors='strict') | 以 encoding 指定的編碼格式編碼 string,如果出錯預設報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace' |
string.endswith(obj, beg=0, end=len(string)) | 檢查字元串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的範圍内是否以 obj 結束,如果是,傳回 True,否則傳回 False. |
string.expandtabs(tabsize=8) | 把字元串 string 中的 tab 符号轉為空格,預設的空格數 tabsize 是 8. |
string.find(str, beg=0, end=len(string)) | 檢測 str 是否包含在 string 中,如果 beg 和 end 指定範圍,則檢查是否包含在指定範圍内,如果是傳回開始的索引值,否則傳回-1 |
string.index(str, beg=0, end=len(string)) | 跟find()方法一樣,隻不過如果str不在 string中會報一個異常. |
string.isalnum() | 如果 string 至少有一個字元并且所有字元都是字母或數字則返 回 True,否則傳回 False |
string.isalpha() | 如果 string 至少有一個字元并且所有字元都是字母則傳回 True, 否則傳回 False |
string.isdecimal() | 如果 string 隻包含十進制數字則傳回 True 否則傳回 False. |
string.isdigit() | 如果 string 隻包含數字則傳回 True 否則傳回 False. |
string.islower() | 如果 string 中包含至少一個區分大小寫的字元,并且所有這些(區分大小寫的)字元都是小寫,則傳回 True,否則傳回 False |
string.isnumeric() | 如果 string 中隻包含數字字元,則傳回 True,否則傳回 False |
string.isspace() | 如果 string 中隻包含空格,則傳回 True,否則傳回 False. |
string.istitle() | 如果 string 是标題化的(見 title())則傳回 True,否則傳回 False |
string.isupper() | 如果 string 中包含至少一個區分大小寫的字元,并且所有這些(區分大小寫的)字元都是大寫,則傳回 True,否則傳回 False |
string.join(seq) | Merges (concatenates)以 string 作為分隔符,将 seq 中所有的元素(的字元串表示)合并為一個新的字元串 |
string.ljust(width) | 傳回一個原字元串左對齊,并使用空格填充至長度 width 的新字元串 |
string.lower() | 轉換 string 中所有大寫字元為小寫. |
string.lstrip() | 截掉 string 左邊的空格 |
string.maketrans(intab, outtab]) | maketrans() 方法用于建立字元映射的轉換表,對于接受兩個參數的最簡單的調用方式,第一個參數是字元串,表示需要轉換的字元,第二個參數也是字元串表示轉換的目标。 |
max(str) | 傳回字元串 str 中最大的字母。 |
min(str) | 傳回字元串 str 中最小的字母。 |
string.partition(str) | 有點像 find()和 split()的結合體,從 str 出現的第一個位置起,把 字 符 串 string 分 成 一 個 3 元 素 的 元 組 (string_pre_str,str,string_post_str),如果 string 中不包含str 則 string_pre_str == string. |
string.replace(str1, str2, num=string.count(str1)) | 把 string 中的 str1 替換成 str2,如果 num 指定,則替換不超過 num 次. |
string.rfind(str, beg=0,end=len(string) ) | 類似于 find()函數,不過是從右邊開始查找. |
string.rindex( str, beg=0,end=len(string)) | 類似于 index(),不過是從右邊開始. |
string.rjust(width) | 傳回一個原字元串右對齊,并使用空格填充至長度 width 的新字元串 |
string.rpartition(str) | 類似于 partition()函數,不過是從右邊開始查找. |
string.rstrip() | 删除 string 字元串末尾的空格. |
string.split(str="", num=string.count(str)) | 以 str 為分隔符切片 string,如果 num有指定值,則僅分隔 num 個子字元串 |
string.splitlines(num=string.count('\n')) | 按照行分隔,傳回一個包含各行作為元素的清單,如果 num 指定則僅切片 num 個行. |
string.startswith(obj, beg=0,end=len(string)) | 檢查字元串是否是以 obj 開頭,是則傳回 True,否則傳回 False。如果beg 和 end 指定值,則在指定範圍内檢查. |
string.strip([obj]) | 在 string 上執行 lstrip()和 rstrip() |
string.swapcase() | 翻轉 string 中的大小寫 |
string.title() | 傳回"标題化"的 string,就是說所有單詞都是以大寫開始,其餘字母均為小寫(見 istitle()) |
string.translate(str, del="") | 根據 str 給出的表(包含 256 個字元)轉換 string 的字元, 要過濾掉的字元放到 del 參數中 |
string.upper() | 轉換 string 中的小寫字母為大寫 |
string.zfill(width) | 傳回長度為 width 的字元串,原字元串 string 右對齊,前面填充0 |
string.isdecimal() | isdecimal()方法檢查字元串是否隻包含十進制字元。這種方法隻存在于unicode對象。 |
Python清單腳本操作符
清單對 + 和 * 的操作符與字元串相似。+ 号用于組合清單,* 号用于重複清單。
如下所示:
Python 表達式 | 結果 | 描述 |
---|---|---|
len([1, 2, 3]) | 3 | 長度 |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 組合 |
['Hi!'] * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 重複 |
3 in [1, 2, 3] | True | 元素是否存在于清單中 |
for x in [1, 2, 3]: print x, | 1 2 3 | 疊代 |
Python清單截取
Python的清單截取與字元串操作類型,如下所示:
L = ['spam', 'Spam', 'SPAM!']
操作:
Python 表達式 | 結果 | 描述 |
---|---|---|
L[2] | 'SPAM!' | 讀取清單中第三個元素 |
L[-2] | 'Spam' | 讀取清單中倒數第二個元素 |
L[1:] | ['Spam', 'SPAM!'] | 從第二個元素開始截取清單 |
Python清單函數&方法
Python包含以下函數:
序号 | 函數 |
---|---|
1 | cmp(list1, list2) 比較兩個清單的元素 |
2 | len(list) 清單元素個數 |
3 | max(list) 傳回清單元素最大值 |
4 | min(list) 傳回清單元素最小值 |
5 | list(seq) 将元組轉換為清單 |
Python包含以下方法:
序号 | 方法 |
---|---|
1 | list.append(obj) 在清單末尾添加新的對象 |
2 | list.count(obj) 統計某個元素在清單中出現的次數 |
3 | list.extend(seq) 在清單末尾一次性追加另一個序列中的多個值(用新清單擴充原來的清單) |
4 | list.index(obj) 從清單中找出某個值第一個比對項的索引位置 |
5 | list.insert(index, obj) 将對象插入清單 |
6 | list.pop(obj=list[-1]) 移除清單中的一個元素(預設最後一個元素),并且傳回該元素的值 |
7 | list.remove(obj) 移除清單中某個值的第一個比對項 |
8 | list.reverse() 反向清單中元素 |
9 | list.sort([func]) 對原清單進行排序 |
Python 字典(Dictionary)
字典是另一種可變容器模型,且可存儲任意類型對象,如其他容器模型。
字典由鍵和對應值成對組成。字典也被稱作關聯數組或哈希表。基本文法如下:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
也可如此建立字典:
dict1 = { 'abc': 456 };
dict2 = { 'abc': 123, 98.6: 37 };
每個鍵與值用冒号隔開(:),每對用逗号,每對用逗号分割,整體放在花括号中({})。
鍵必須獨一無二,但值則不必。
通路字典裡的值
把相應的鍵放入熟悉的方括弧,如下執行個體:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];
以上執行個體輸出結果:
dict['Name']: Zara
dict['Age']: 7
如果用字典裡沒有的鍵通路資料,會輸出錯誤如下:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print "dict['Alice']: ", dict['Alice'];
以上執行個體輸出結果:
dict['Zara']:
Traceback (most recent call last):
File "test.py", line 4, in <module>
print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'
修改字典
向字典添加新内容的方法是增加新的鍵/值對,修改或删除已有鍵/值對如下執行個體:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];
以上執行個體輸出結果:
dict['Age']: 8
dict['School']: DPS School
删除字典元素
能删單一的元素也能清空字典,清空隻需一項操作。
顯示删除一個字典用del指令,如下執行個體:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
del dict['Name']; # 删除鍵是'Name'的條目
dict.clear(); # 清空詞典所有條目
del dict ; # 删除詞典
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];
但這會引發一個異常,因為用del後字典不再存在:
dict['Age']:
Traceback (most recent call last):
File "test.py", line 8, in <module>
print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable
注:del()方法後面也會讨論。
删除字典元素
字典鍵的特性
字典值可以沒有限制地取任何python對象,既可以是标準的對象,也可以是使用者定義的,但鍵不行。
兩個重要的點需要記住:
1)不允許同一個鍵出現兩次。建立時如果同一個鍵被指派兩次,後一個值會被記住,如下執行個體:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'};
print "dict['Name']: ", dict['Name'];
以上執行個體輸出結果:
dict['Name']: Manni
2)鍵必須不可變,是以可以用數,字元串或元組充當,是以用清單就不行,如下執行個體:
#!/usr/bin/python
dict = {['Name']: 'Zara', 'Age': 7};
print "dict['Name']: ", dict['Name'];
以上執行個體輸出結果:
Traceback (most recent call last):
File "test.py", line 3, in <module>
dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable
字典内置函數&方法
Python字典包含了以下内置函數:
序号 | 函數及描述 |
---|---|
1 | cmp(dict1, dict2) 比較兩個字典元素。 |
2 | len(dict) 計算字典元素個數,即鍵的總數。 |
3 | str(dict) 輸出字典可列印的字元串表示。 |
4 | type(variable) 傳回輸入的變量類型,如果變量是字典就傳回字典類型。 |
Python字典包含了以下内置函數:
序号 | 函數及描述 |
---|---|
1 | radiansdict.clear() 删除字典内所有元素 |
2 | radiansdict.copy() 傳回一個字典的淺複制 |
3 | radiansdict.fromkeys() 建立一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值 |
4 | radiansdict.get(key, default=None) 傳回指定鍵的值,如果值不在字典中傳回default值 |
5 | radiansdict.has_key(key) 如果鍵在字典dict裡傳回true,否則傳回false |
6 | radiansdict.items() 以清單傳回可周遊的(鍵, 值) 元組數組 |
7 | radiansdict.keys() 以清單傳回一個字典所有的鍵 |
8 | radiansdict.setdefault(key, default=None) 和get()類似, 但如果鍵不已經存在于字典中,将會添加鍵并将值設為default |
9 | radiansdict.update(dict2) 把字典dict2的鍵/值對更新到dict裡 |
10 | radiansdict.values() 以清單傳回字典中的所有值 |
Python 日期和時間
Python程式能用很多方式處理日期和時間。轉換日期格式是一個常見的例行瑣事。Python有一個time and calendar模組可以幫忙。
什麼是Tick?
時間間隔是以秒為機關的浮點小數。
每個時間戳都以自從1970年1月1日午夜(曆元)經過了多長時間來表示。
Python附帶的受歡迎的time子產品下有很多函數可以轉換常見日期格式。如函數time.time()用ticks計時機關傳回從12:00am, January 1, 1970(epoch) 開始的記錄的目前作業系統時間, 如下執行個體:
#!/usr/bin/python
import time; # This is required to include time module.
ticks = time.time()
print "Number of ticks since 12:00am, January 1, 1970:", ticks
以上執行個體輸出結果:
Number of ticks since 12:00am, January 1, 1970: 7186862.73399
Tick機關最适于做日期運算。但是1970年之前的日期就無法以此表示了。太遙遠的日期也不行,UNIX和Windows隻支援到2038年某日。
什麼是時間元組?
很多Python函數用一個元組裝起來的9組數字處理時間:
<td0到59< td="" style="font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica, Arial, sans-serif;">
序号 | 字段 | 值 |
---|---|---|
4位數年 | 2008 | |
1 | 月 | 1 到 12 |
2 | 日 | 1到31 |
3 | 小時 | 0到23 |
4 | 分鐘 | |
5 | 秒 | 0到61 (60或61 是閏秒) |
6 | 一周的第幾日 | 0到6 (0是周一) |
7 | 一年的第幾日 | 1到366 (儒略曆) |
8 | 夏令時 | -1, 0, 1, -1是決定是否為夏令時的旗幟 |
上述也就是struct_time元組。這種結構具有如下屬性:
序号 | 屬性 | 值 |
---|---|---|
tm_year | 2008 | |
1 | tm_mon | 1 到 12 |
2 | tm_mday | 1 到 31 |
3 | tm_hour | 0 到 23 |
4 | tm_min | 0 到 59 |
5 | tm_sec | 0 到 61 (60或61 是閏秒) |
6 | tm_wday | 0到6 (0是周一) |
7 | tm_yday | 1 到 366(儒略曆) |
8 | tm_isdst | -1, 0, 1, -1是決定是否為夏令時的旗幟 |
擷取目前時間
從傳回浮點數的時間辍方式向時間元組轉換,隻要将浮點數傳遞給如localtime之類的函數。
#!/usr/bin/python
import time;
localtime = time.localtime(time.time())
print "Local current time :", localtime
以上執行個體輸出結果:
Local current time : time.struct_time(tm_year=2013, tm_mon=7,
tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2, tm_yday=198, tm_isdst=0)
擷取格式化的時間
你可以根據需求選取各種格式,但是最簡單的擷取可讀的時間模式的函數是asctime():
#!/usr/bin/python
import time;
localtime = time.asctime( time.localtime(time.time()) )
print "Local current time :", localtime
以上執行個體輸出結果:
Local current time : Tue Jan 13 10:17:09 2009
擷取某月月曆
Calendar子產品有很廣泛的方法用來處理年曆和月曆,例如列印某月的月曆:
#!/usr/bin/python
import calendar
cal = calendar.month(2008, 1)
print "Here is the calendar:"
print cal;
以上執行個體輸出結果:
Here is the calendar:
January 2008
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Time子產品
Time子產品包含了以下内置函數,既有時間處理相的,也有轉換時間格式的:
序号 | 函數及描述 |
---|---|
1 | time.altzone 傳回格林威治西部的夏令時地區的偏移秒數。如果該地區在格林威治東部會傳回負值(如西歐,包括英國)。對夏令時啟用地區才能使用。 |
2 | time.asctime([tupletime]) 接受時間元組并傳回一個可讀的形式為"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18時07分14秒)的24個字元的字元串。 |
3 | time.clock( ) 用以浮點數計算的秒數傳回目前的CPU時間。用來衡量不同程式的耗時,比time.time()更有用。 |
4 | time.ctime([secs]) 作用相當于asctime(localtime(secs)),未給參數相當于asctime() |
5 | time.gmtime([secs]) 接收時間辍(1970紀元後經過的浮點秒數)并傳回格林威治天文時間下的時間元組t。注:t.tm_isdst始終為0 |
6 | time.localtime([secs]) 接收時間辍(1970紀元後經過的浮點秒數)并傳回當地時間下的時間元組t(t.tm_isdst可取0或1,取決于當地當時是不是夏令時)。 |
7 | time.mktime(tupletime) 接受時間元組并傳回時間辍(1970紀元後經過的浮點秒數)。 |
8 | time.sleep(secs) 推遲調用線程的運作,secs指秒數。 |
9 | time.strftime(fmt[,tupletime]) 接收以時間元組,并傳回以可讀字元串表示的當地時間,格式由fmt決定。 |
10 | time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') 根據fmt的格式把一個時間字元串解析為時間元組。 |
11 | time.time( ) 傳回目前時間的時間戳(1970紀元後經過的浮點秒數)。 |
12 | time.tzset() 根據環境變量TZ重新初始化時間相關設定。 |
Time子產品包含了以下2個非常重要的屬性:
序号 | 屬性及描述 |
---|---|
1 | time.timezone 屬性time.timezone是當地時區(未啟動夏令時)距離格林威治的偏移秒數(>0,美洲;<=0大部分歐洲,亞洲,非洲)。 |
2 | time.tzname 屬性time.tzname包含一對根據情況的不同而不同的字元串,分别是帶夏令時的本地時區名稱,和不帶的。 |
月曆(Calendar)子產品
此子產品的函數都是月曆相關的,例如列印某月的字元月曆。
星期一是預設的每周第一天,星期天是預設的最後一天。更改設定需調用calendar.setfirstweekday()函數。子產品包含了以下内置函數:
序号 | 函數及描述 |
---|---|
1 | calendar.calendar(year,w=2,l=1,c=6) 傳回一個多行字元串格式的year年年曆,3個月一行,間隔距離為c。 每日寬度間隔為w字元。每行長度為21* W+18+2* C。l是每星期行數。 |
2 | calendar.firstweekday( ) 傳回目前每周起始日期的設定。預設情況下,首次載入caendar子產品時傳回0,即星期一。 |
3 | calendar.isleap(year) 是閏年傳回True,否則為false。 |
4 | calendar.leapdays(y1,y2) 傳回在Y1,Y2兩年之間的閏年總數。 |
5 | calendar.month(year,month,w=2,l=1) 傳回一個多行字元串格式的year年month月月曆,兩行标題,一周一行。每日寬度間隔為w字元。每行的長度為7* w+6。l是每星期的行數。 |
6 | calendar.monthcalendar(year,month) 傳回一個整數的單層嵌套清單。每個子清單裝載代表一個星期的整數。Year年month月外的日期都設為0;範圍内的日子都由該月第幾日表示,從1開始。 |
7 | calendar.monthrange(year,month) 傳回兩個整數。第一個是該月的星期幾的日期碼,第二個是該月的日期碼。日從0(星期一)到6(星期日);月從1到12。 |
8 | calendar.prcal(year,w=2,l=1,c=6) 相當于 print calendar.calendar(year,w,l,c). |
9 | calendar.prmonth(year,month,w=2,l=1) 相當于 print calendar.calendar(year,w,l,c)。 |
10 | calendar.setfirstweekday(weekday) 設定每周的起始日期碼。0(星期一)到6(星期日)。 |
11 | calendar.timegm(tupletime) 和time.gmtime相反:接受一個時間元組形式,傳回該時刻的時間辍(1970紀元後經過的浮點秒數)。 |
12 | calendar.weekday(year,month,day) 傳回給定日期的日期碼。0(星期一)到6(星期日)。月份為 1(一月) 到 12(12月)。 |
其他相關子產品和函數
在Python種,其他處理日期和時間的子產品還有:
- datetime子產品
- pytz子產品
- ateutil子產品