1、complex()
成都創(chuàng)新互聯(lián)公司成立于2013年,先為豐順等服務(wù)建站,豐順等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為豐順企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
返回一個形如?a+bj?的復(fù)數(shù),傳入?yún)?shù)分為三種情況:
參數(shù)為空時,返回0j;參數(shù)為字符串時,將字符串表達(dá)式解釋為復(fù)數(shù)形式并返回;參數(shù)為兩個整數(shù)(a,b)時,返回?a+bj;參數(shù)只有一個整數(shù) a 時,虛部 b 默認(rèn)為0,函數(shù)返回?a+0j。
2、dir()
不提供參數(shù)時,返回當(dāng)前本地范圍內(nèi)的名稱列表;提供一個參數(shù)時,返回該對象包含的全部屬性。
3、divmod(a,b)
a -- 代表被除數(shù),整數(shù)或浮點(diǎn)數(shù);b -- 代表除數(shù),整數(shù)或浮點(diǎn)數(shù);根據(jù) 除法運(yùn)算 計(jì)算 a,b 之間的商和余數(shù),函數(shù)返回一個元組(p,q)?,p 代表商?a//b?,q 代表余數(shù)?a%b。
4、enumerate(iterable,start=0)
iterable -- 一個可迭代對象,列表、元組序列等;start -- 計(jì)數(shù)索引值,默認(rèn)初始為0‘該函數(shù)返回枚舉對象是個迭代器,利用 next() 方法依次返回元素值,每個元素以元組形式存在,包含一個計(jì)數(shù)元素(起始為 start )和 iterable 中對應(yīng)的元素值。
1.常用內(nèi)置函數(shù):(不用import就可以直接使用)
help(obj) 在線幫助, obj可是任何類型
callable(obj) 查看一個obj是不是可以像函數(shù)一樣調(diào)用
repr(obj) 得到obj的表示字符串,可以利用這個字符串eval重建該對象的一個拷貝
eval_r(str) 表示合法的python表達(dá)式,返回這個表達(dá)式
dir(obj) 查看obj的name space中可見的name
hasattr(obj,name) 查看一個obj的name space中是否有name
getattr(obj,name) 得到一個obj的name space中的一個name
setattr(obj,name,value) 為一個obj的name space中的一個name指向vale這個object
delattr(obj,name) 從obj的name space中刪除一個name
vars(obj) 返回一個object的name space。用dictionary表示
locals() 返回一個局部name space,用dictionary表示
globals() 返回一個全局name space,用dictionary表示
type(obj) 查看一個obj的類型
isinstance(obj,cls) 查看obj是不是cls的instance
issubclass(subcls,supcls) 查看subcls是不是supcls的子類
類型轉(zhuǎn)換函數(shù)
chr(i) 把一個ASCII數(shù)值,變成字符
ord(i) 把一個字符或者unicode字符,變成ASCII數(shù)值
oct(x) 把整數(shù)x變成八進(jìn)制表示的字符串
hex(x) 把整數(shù)x變成十六進(jìn)制表示的字符串
str(obj) 得到obj的字符串描述
list(seq) 把一個sequence轉(zhuǎn)換成一個list
tuple(seq) 把一個sequence轉(zhuǎn)換成一個tuple
dict(),dict(list) 轉(zhuǎn)換成一個dictionary
int(x) 轉(zhuǎn)換成一個integer
long(x) 轉(zhuǎn)換成一個long interger
float(x) 轉(zhuǎn)換成一個浮點(diǎn)數(shù)
complex(x) 轉(zhuǎn)換成復(fù)數(shù)
max(...) 求最大值
min(...) 求最小值
用于執(zhí)行程序的內(nèi)置函數(shù)
complie 如果一段代碼經(jīng)常要使用,那么先編譯,再運(yùn)行會更快。
2.和操作系統(tǒng)相關(guān)的調(diào)用
系統(tǒng)相關(guān)的信息模塊 import sys
sys.argv是一個list,包含所有的命令行參數(shù).
sys.stdout sys.stdin sys.stderr 分別表示標(biāo)準(zhǔn)輸入輸出,錯誤輸出的文件對象.
sys.stdin.readline() 從標(biāo)準(zhǔn)輸入讀一行 sys.stdout.write("a") 屏幕輸出a
sys.exit(exit_code) 退出程序
sys.modules 是一個dictionary,表示系統(tǒng)中所有可用的module
sys.platform 得到運(yùn)行的操作系統(tǒng)環(huán)境
sys.path 是一個list,指明所有查找module,package的路徑.
操作系統(tǒng)相關(guān)的調(diào)用和操作 import os
os.environ 一個dictionary 包含環(huán)境變量的映射關(guān)系 os.environ["HOME"] 可以得到環(huán)境變量HOME的值
os.chdir(dir) 改變當(dāng)前目錄 os.chdir('d:\\outlook') 注意windows下用到轉(zhuǎn)義
os.getcwd() 得到當(dāng)前目錄
os.getegid() 得到有效組id os.getgid() 得到組id
os.getuid() 得到用戶id os.geteuid() 得到有效用戶id
os.setegid os.setegid() os.seteuid() os.setuid()
os.getgruops() 得到用戶組名稱列表
os.getlogin() 得到用戶登錄名稱
os.getenv 得到環(huán)境變量
os.putenv 設(shè)置環(huán)境變量
os.umask 設(shè)置umask
os.system(cmd) 利用系統(tǒng)調(diào)用,運(yùn)行cmd命令
操作舉例:
os.mkdir('/tmp/xx') os.system("echo 'hello' /tmp/xx/a.txt") os.listdir('/tmp/xx')
os.rename('/tmp/xx/a.txt','/tmp/xx/b.txt') os.remove('/tmp/xx/b.txt') os.rmdir('/tmp/xx')
用python編寫一個簡單的shell
#!/usr/bin/python
import os, sys
cmd = sys.stdin.readline()
while cmd:
os.system(cmd)
cmd = sys.stdin.readline()
用os.path編寫平臺無關(guān)的程序
os.path.abspath("1.txt") == os.path.join(os.getcwd(), "1.txt")
os.path.split(os.getcwd()) 用于分開一個目錄名稱中的目錄部分和文件名稱部分。
os.path.join(os.getcwd(), os.pardir, 'a', 'a.doc') 全成路徑名稱.
os.pardir 表示當(dāng)前平臺下上一級目錄的字符 ..
os.path.getctime("/root/1.txt") 返回1.txt的ctime(創(chuàng)建時間)時間戳
os.path.exists(os.getcwd()) 判斷文件是否存在
os.path.expanduser('~/dir') 把~擴(kuò)展成用戶根目錄
os.path.expandvars('$PATH') 擴(kuò)展環(huán)境變量PATH
os.path.isfile(os.getcwd()) 判斷是否是文件名,1是0否
os.path.isdir('c:\Python26\temp') 判斷是否是目錄,1是0否
os.path.islink('/home/huaying/111.sql') 是否是符號連接 windows下不可用
os.path.ismout(os.getcwd()) 是否是文件系統(tǒng)安裝點(diǎn) windows下不可用
os.path.samefile(os.getcwd(), '/home/huaying') 看看兩個文件名是不是指的是同一個文件
os.path.walk('/home/huaying', test_fun, "a.c")
遍歷/home/huaying下所有子目錄包括本目錄,對于每個目錄都會調(diào)用函數(shù)test_fun.
例:在某個目錄中,和他所有的子目錄中查找名稱是a.c的文件或目錄。
def test_fun(filename, dirname, names): //filename即是walk中的a.c dirname是訪問的目錄名稱
if filename in names: //names是一個list,包含dirname目錄下的所有內(nèi)容
print os.path.join(dirname, filename)
os.path.walk('/home/huaying', test_fun, "a.c")
文件操作
打開文件
f = open("filename", "r") r只讀 w寫 rw讀寫 rb讀二進(jìn)制 wb寫二進(jìn)制 w+寫追加
讀寫文件
f.write("a") f.write(str) 寫一字符串 f.writeline() f.readlines() 與下read類同
f.read() 全讀出來 f.read(size) 表示從文件中讀取size個字符
f.readline() 讀一行,到文件結(jié)尾,返回空串. f.readlines() 讀取全部,返回一個list. list每個元素表示一行,包含"\n"\
f.tell() 返回當(dāng)前文件讀取位置
f.seek(off, where) 定位文件讀寫位置. off表示偏移量,正數(shù)向文件尾移動,負(fù)數(shù)表示向開頭移動。
where為0表示從開始算起,1表示從當(dāng)前位置算,2表示從結(jié)尾算.
f.flush() 刷新緩存
關(guān)閉文件
f.close()
regular expression 正則表達(dá)式 import re
簡單的regexp
p = re.compile("abc") if p.match("abc") : print "match"
上例中首先生成一個pattern(模式),如果和某個字符串匹配,就返回一個match object
除某些特殊字符metacharacter元字符,大多數(shù)字符都和自身匹配。
這些特殊字符是 。^ $ * + ? { [ ] \ | ( )
字符集合(用[]表示)
列出字符,如[abc]表示匹配a或b或c,大多數(shù)metacharacter在[]中只表示和本身匹配。例:
a = ".^$*+?{\\|()" 大多數(shù)metachar在[]中都和本身匹配,但"^[]\"不同
p = re.compile("["+a+"]")
for i in a:
if p.match(i):
print "[%s] is match" %i
else:
print "[%s] is not match" %i
在[]中包含[]本身,表示"["或者"]"匹配.用
和
表示.
^出現(xiàn)在[]的開頭,表示取反.[^abc]表示除了a,b,c之外的所有字符。^沒有出現(xiàn)在開頭,即于身身匹配。
-可表示范圍.[a-zA-Z]匹配任何一個英文字母。[0-9]匹配任何數(shù)字。
\在[]中的妙用。
\d [0-9]
\D [^0-9]
\s [ \t\n\r\f\v]
\S [^ \t\n\r\f\v]
\w [a-zA-Z0-9_]
\W [^a-zA-Z0-9_]
\t 表示和tab匹配, 其他的都和字符串的表示法一致
\x20 表示和十六進(jìn)制ascii 0x20匹配
有了\,可以在[]中表示任何字符。注:單獨(dú)的一個"."如果沒有出現(xiàn)[]中,表示出了換行\(zhòng)n以外的匹配任何字符,類似[^\n].
regexp的重復(fù)
{m,n}表示出現(xiàn)m個以上(含m個),n個以下(含n個). 如ab{1,3}c和abc,abbc,abbbc匹配,不會與ac,abbbc匹配。
m是下界,n是上界。m省略表下界是0,n省略,表上界無限大。
*表示{,} +表示{1,} ?表示{0,1}
最大匹配和最小匹配 python都是最大匹配,如果要最小匹配,在*,+,?,{m,n}后面加一個?.
match object的end可以得到匹配的最后一個字符的位置。
re.compile("a*").match('aaaa').end() 4 最大匹配
re.compile("a*?").match('aaaa').end() 0 最小匹配
使用原始字符串
字符串表示方法中用\\表示字符\.大量使用影響可讀性。
解決方法:在字符串前面加一個r表示raw格式。
a = r"\a" print a 結(jié)果是\a
a = r"\"a" print a 結(jié)果是\"a
使用re模塊
先用re.compile得到一個RegexObject 表示一個regexp
后用pattern的match,search的方法,得到MatchObject
再用match object得到匹配的位置,匹配的字符串等信息
RegxObject常用函數(shù):
re.compile("a").match("abab") 如果abab的開頭和re.compile("a")匹配,得到MatchObject
_sre.SRE_Match object at 0x81d43c8
print re.compile("a").match("bbab")
None 注:從str的開頭開始匹配
re.compile("a").search("abab") 在abab中搜索第一個和re_obj匹配的部分
_sre.SRE_Match object at 0x81d43c8
print re.compile("a").search("bbab")
_sre.SRE_Match object at 0x8184e18 和match()不同,不必從開頭匹配
re_obj.findall(str) 返回str中搜索所有和re_obj匹配的部分.
返回一個tuple,其中元素是匹配的字符串.
MatchObject的常用函數(shù)
m.start() 返回起始位置,m.end()返回結(jié)束位置(不包含該位置的字符).
m.span() 返回一個tuple表示(m.start(), m.end())
m.pos(), m.endpos(), m.re(), m.string()
m.re().search(m.string(), m.pos(), m.endpos()) 會得到m本身
m.finditer()可以返回一個iterator,用來遍歷所有找到的MatchObject.
for m in re.compile("[ab]").finditer("tatbxaxb"):
print m.span()
高級regexp
| 表示聯(lián)合多個regexp. A B兩個regexp,A|B表示和A匹配或者跟B匹配.
^ 表示只匹配一行的開始行首,^只有在開頭才有此特殊意義。
$ 表示只匹配一行的結(jié)尾
\A 表示只匹配第一行字符串的開頭 ^匹配每一行的行首
\Z 表示只匹配行一行字符串的結(jié)尾 $匹配第一行的行尾
\b 只匹配詞的邊界 例:\binfo\b 只會匹配"info" 不會匹配information
\B 表示匹配非單詞邊界
示例如下:
print re.compile(r"\binfo\b").match("info ") #使用raw格式 \b表示單詞邊界
_sre.SRE_Match object at 0x817aa98
print re.compile("\binfo\b").match("info ") #沒有使用raw \b表示退格符號
None
print re.compile("\binfo\b").match("\binfo\b ")
_sre.SRE_Match object at 0x8174948
分組(Group) 示例:re.compile("(a(b)c)d").match("abcd").groups() ('abc', 'b')
#!/usr/local/bin/python
import re
x = """
name: Charles
Address: BUPT
name: Ann
Address: BUPT
"""
#p = re.compile(r"^name:(.*)\n^Address:(.*)\n", re.M)
p = re.compile(r"^name:(?P.*)\n^Address:(?P.*)\n", re.M)
for m in p.finditer(x):
print m.span()
print "here is your friends list"
print "%s, %s"%m.groups()
Compile Flag
用re.compile得到RegxObject時,可以有一些flag用來調(diào)整RegxObject的詳細(xì)特征.
DOTALL, S 讓.匹配任意字符,包括換行符\n
IGNORECASE, I 忽略大小寫
LOCALES, L 讓\w \W \b \B和當(dāng)前的locale一致
MULTILINE, M 多行模式,只影響^和$(參見上例)
VERBOSE, X verbose模式
運(yùn)算
a = 21
b = 10
c = 0
c = a + b
print "1 - c 的值為:", c
c = a - b
print "2 - c 的值為:", c
c = a * b
print "3 - c 的值為:", c
c = a / b
print "4 - c 的值為:", c
c = a % b
print "5 - c 的值為:", c
a = 2
b = 3
c = a**b
print "6 - c 的值為:", c
a = 10
b = 5
c = a//b
print "7 - c 的值為:", c
python比較
a = 21
b = 10
c = 0
if ( a == b ):
print "1 - a 等于 b"
else:
print "1 - a 不等于 b"
if ( a != b ):
print "2 - a 不等于 b"
else:
print "2 - a 等于 b"
if ( a b ):
print "3 - a 不等于 b"
else:
print "3 - a 等于 b"
if ( a b ):
print "4 - a 小于 b"
else:
print "4 - a 大于等于 b"
if ( a b ):
print "5 - a 大于 b"
else:
print "5 - a 小于等于 b"
a = 5
b = 20
if ( a = b ):
print "6 - a 小于等于 b"
else:
print "6 - a 大于 b"
if ( b = a ):
print "7 - b 大于等于 a"
else:
print "7 - b 小于 a"
賦值
a = 21
b = 10
c = 0
c = a + b
print "1 - c 的值為:", c
c += a
print "2 - c 的值為:", c
c *= a
print "3 - c 的值為:", c
c /= a
print "4 - c 的值為:", c
c = 2
c %= a
print "5 - c 的值為:", c
c **= a
print "6 - c 的值為:", c
c //= a
print "7 - c 的值為:", c
邏輯運(yùn)算符:
a = 10
b = 20
if ( a and b ):
print "1 - 變量 a 和 b 都為 true"
else:
print "1 - 變量 a 和 b 有一個不為 true"
if ( a or b ):
print "2 - 變量 a 和 b 都為 true,或其中一個變量為 true"
else:
print "2 - 變量 a 和 b 都不為 true"
a = 0
if ( a and b ):
print "3 - 變量 a 和 b 都為 true"
else:
print "3 - 變量 a 和 b 有一個不為 true"
if ( a or b ):
print "4 - 變量 a 和 b 都為 true,或其中一個變量為 true"
else:
print "4 - 變量 a 和 b 都不為 true"
if not( a and b ):
print "5 - 變量 a 和 b 都為 false,或其中一個變量為 false"
else:
print "5 - 變量 a 和 b 都為 true"
in,not in
a = 10
b = 20
list = [1, 2, 3, 4, 5 ];
if ( a in list ):
print "1 - 變量 a 在給定的列表中 list 中"
else:
print "1 - 變量 a 不在給定的列表中 list 中"
if ( b not in list ):
print "2 - 變量 b 不在給定的列表中 list 中"
else:
print "2 - 變量 b 在給定的列表中 list 中"
a = 2
if ( a in list ):
print "3 - 變量 a 在給定的列表中 list 中"
else:
print "3 - 變量 a 不在給定的列表中 list 中"
條件
flag = False
name = 'luren'
if name == 'python': # 判斷變量否為'python'
flag = True # 條件成立時設(shè)置標(biāo)志為真
print 'welcome boss' # 并輸出歡迎信息
else:
print name
num = 5
if num == 3: # 判斷num的值
print 'boss'
elif num == 2:
print 'user'
elif num == 1:
print 'worker'
elif num 0: # 值小于零時輸出
print 'error'
else:
print 'roadman' # 條件均不成立時輸出
循環(huán)語句:
count = 0
while (count 9):
print 'The count is:', count
count = count + 1
print "Good bye!"
i = 1
while i 10:
i += 1
if i%2 0: # 非雙數(shù)時跳過輸出
continue
print i # 輸出雙數(shù)2、4、6、8、10
i = 1
while 1: # 循環(huán)條件為1必定成立
print i # 輸出1~10
i += 1
if i 10: # 當(dāng)i大于10時跳出循環(huán)
break
for letter in 'Python': # 第一個實(shí)例
print '當(dāng)前字母 :', letter
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # 第二個實(shí)例
print '當(dāng)前水果 :', fruit
print "Good bye!"
獲取用戶輸入:raw_input
var = 1
while var == 1 : # 該條件永遠(yuǎn)為true,循環(huán)將無限執(zhí)行下去
num = raw_input("Enter a number :")
print "You entered: ", num
print "Good bye!"
range,len
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print '當(dāng)前水果 :', fruits[index]
print "Good bye!"
python數(shù)學(xué)函數(shù):
abs,cell,cmp,exp,fabs,floor,log,log10,max,min,mod,pow,round,sqrt
randrange
訪問字符串的值
var1 = 'Hello World!'
var2 = "Python Runoob"
print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]
轉(zhuǎn)義字符
格式化輸出
print "My name is %s and weight is %d kg!" % ('Zara', 21)
字符串函數(shù):
添加元素
list = [] ## 空列表
list.append('Google') ## 使用 append() 添加元素
list.append('Runoob')
print list
刪除元素
list1 = ['physics', 'chemistry', 1997, 2000]
print list1
del list1[2]
print "After deleting value at index 2 : "
print list1
列表操作
列表方法
刪除字典
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'];
字典的函數(shù):
當(dāng)前時間戳:
import time
time.time()
格式化日期輸出
import time
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())
a = "Sat Mar 28 22:24:24 2016"
print time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))
獲取某個月日歷:calendar
import calendar
cal = calendar.month(2016, 1)
print "以下輸出2016年1月份的日歷:"
print cal
當(dāng)前日期和時間
import datetime
i = datetime.datetime.now()
print ("當(dāng)前的日期和時間是 %s" % i)
print ("ISO格式的日期和時間是 %s" % i.isoformat() )
print ("當(dāng)前的年份是 %s" %i.year)
print ("當(dāng)前的月份是 %s" %i.month)
print ("當(dāng)前的日期是 %s" %i.day)
print ("dd/mm/yyyy 格式是 %s/%s/%s" % (i.day, i.month, i.year) )
print ("當(dāng)前小時是 %s" %i.hour)
print ("當(dāng)前分鐘是 %s" %i.minute)
print ("當(dāng)前秒是 %s" %i.second)
不定長參數(shù):*
lambda:匿名函數(shù)
def....
python模塊搜索路徑
獲取用戶輸入
str = raw_input("請輸入:")
print "你輸入的內(nèi)容是: ", str
input可以接收表達(dá)式
open參數(shù)
write要自己添加換行符
讀取10個字符
重命名:os.rename
os.remove
os.mkdir os.chdir
os.getcwd
os.rmdir
open參數(shù)
file的方法
異常:
try:
fh = open("testfile", "w")
fh.write("這是一個測試文件,用于測試異常!!")
except IOError:
print "Error: 沒有找到文件或讀取文件失敗"
else:
print "內(nèi)容寫入文件成功"
fh.close()
try:
fh = open("testfile", "w")
fh.write("這是一個測試文件,用于測試異常!!")
finally:
print "Error: 沒有找到文件或讀取文件失敗"
用戶自定義異常:
os 模塊提供了非常豐富的方法用來處理文件和目錄。常用的方法如下表所示:
| 序號 | 方法及描述 |
| 1 |
os.access(path, mode)
檢驗(yàn)權(quán)限模式 |
| 2 |
os.chdir(path)
改變當(dāng)前工作目錄 |
| 3 |
os.chflags(path, flags)
設(shè)置路徑的標(biāo)記為數(shù)字標(biāo)記。 |
| 4 |
os.chmod(path, mode)
更改權(quán)限 |
| 5 |
os.chown(path, uid, gid)
更改文件所有者 |
| 6 |
os.chroot(path)
改變當(dāng)前進(jìn)程的根目錄 |
| 7 |
os.close(fd)
關(guān)閉文件描述符 fd |
| 8 |
os.closerange(fd_low, fd_high)
關(guān)閉所有文件描述符,從 fd_low (包含) 到 fd_high (不包含), 錯誤會忽略 |
| 9 |
os.dup(fd)
復(fù)制文件描述符 fd |
| 10 |
os.dup2(fd, fd2)
將一個文件描述符 fd 復(fù)制到另一個 fd2 |
| 11 |
os.fchdir(fd)
通過文件描述符改變當(dāng)前工作目錄 |
| 12 |
os.fchmod(fd, mode)
改變一個文件的訪問權(quán)限,該文件由參數(shù)fd指定,參數(shù)mode是Unix下的文件訪問權(quán)限。 |
| 13 |
os.fchown(fd, uid, gid)
修改一個文件的所有權(quán),這個函數(shù)修改一個文件的用戶ID和用戶組ID,該文件由文件描述符fd指定。 |
| 14 |
os.fdatasync(fd)
強(qiáng)制將文件寫入磁盤,該文件由文件描述符fd指定,但是不強(qiáng)制更新文件的狀態(tài)信息。 |
| 15 |
os.fdopen(fd[, mode[, bufsize]])
通過文件描述符 fd 創(chuàng)建一個文件對象,并返回這個文件對象 |
| 16 |
os.fpathconf(fd, name)
返回一個打開的文件的系統(tǒng)配置信息。name為檢索的系統(tǒng)配置的值,它也許是一個定義系統(tǒng)值的字符串,這些名字在很多標(biāo)準(zhǔn)中指定(POSIX.1, Unix 95, Unix 98, 和其它)。 |
| 17 |
os.fstat(fd)
返回文件描述符fd的狀態(tài),像stat()。 |
| 18 |
os.fstatvfs(fd)
返回包含文件描述符fd的文件的文件系統(tǒng)的信息,像 statvfs() |
| 19 |
os.fsync(fd)
強(qiáng)制將文件描述符為fd的文件寫入硬盤。 |
| 20 |
os.ftruncate(fd, length)
裁剪文件描述符fd對應(yīng)的文件, 所以它最大不能超過文件大小。 |
| 21 |
os.getcwd()
返回當(dāng)前工作目錄 |
| 22 |
os.getcwdu()
返回一個當(dāng)前工作目錄的Unicode對象 |
| 23 |
os.isatty(fd)
如果文件描述符fd是打開的,同時與tty(-like)設(shè)備相連,則返回true, 否則False。 |
| 24 |
os.lchflags(path, flags)
設(shè)置路徑的標(biāo)記為數(shù)字標(biāo)記,類似 chflags(),但是沒有軟鏈接 |
| 25 |
os.lchmod(path, mode)
修改連接文件權(quán)限 |
| 26 |
os.lchown(path, uid, gid)
更改文件所有者,類似 chown,但是不追蹤鏈接。 |
| 27 |
os.link(src, dst)
創(chuàng)建硬鏈接,名為參數(shù) dst,指向參數(shù) src |
| 28 |
os.listdir(path)
返回path指定的文件夾包含的文件或文件夾的名字的列表。 |
| 29 |
os.lseek(fd, pos, how)
設(shè)置文件描述符 fd當(dāng)前位置為pos, how方式修改: SEEK_SET 或者 0 設(shè)置從文件開始的計(jì)算的pos; SEEK_CUR或者 1 則從當(dāng)前位置計(jì)算; os.SEEK_END或者2則從文件尾部開始. 在unix,Windows中有效 |
| 30 |
os.lstat(path)
像stat(),但是沒有軟鏈接 |
| 31 |
os.major(device)
從原始的設(shè)備號中提取設(shè)備major號碼 (使用stat中的st_dev或者st_rdev field)。 |
| 32 |
os.makedev(major, minor)
以major和minor設(shè)備號組成一個原始設(shè)備號 |
| 33 |
os.makedirs(path[, mode])
遞歸文件夾創(chuàng)建函數(shù)。像mkdir(), 但創(chuàng)建的所有intermediate-level文件夾需要包含子文件夾。 |
| 34 |
os.minor(device)
從原始的設(shè)備號中提取設(shè)備minor號碼 (使用stat中的st_dev或者st_rdev field )。 |
| 35 |
os.mkdir(path[, mode])
以數(shù)字mode的mode創(chuàng)建一個名為path的文件夾.默認(rèn)的 mode 是 0777 (八進(jìn)制)。 |
| 36 |
os.mkfifo(path[, mode])
創(chuàng)建命名管道,mode 為數(shù)字,默認(rèn)為 0666 (八進(jìn)制) |
| 37 |
os.mknod(filename[, mode=0600, device])
創(chuàng)建一個名為filename文件系統(tǒng)節(jié)點(diǎn)(文件,設(shè)備特別文件或者命名pipe)。
|
| 38 |
os.open(file, flags[, mode])
打開一個文件,并且設(shè)置需要的打開選項(xiàng),mode參數(shù)是可選的 |
| 39 |
os.openpty()
打開一個新的偽終端對。返回 pty 和 tty的文件描述符。 |
| 40 |
os.pathconf(path, name)
返回相關(guān)文件的系統(tǒng)配置信息。 |
| 41 |
os.pipe()
創(chuàng)建一個管道. 返回一對文件描述符(r, w) 分別為讀和寫 |
| 42 |
os.popen(command[, mode[, bufsize]])
從一個 command 打開一個管道 |
| 43 |
os.read(fd, n)
從文件描述符 fd 中讀取最多 n 個字節(jié),返回包含讀取字節(jié)的字符串,文件描述符 fd對應(yīng)文件已達(dá)到結(jié)尾, 返回一個空字符串。 |
| 44 |
os.readlink(path)
返回軟鏈接所指向的文件 |
| 45 |
os.remove(path)
刪除路徑為path的文件。如果path 是一個文件夾,將拋出OSError; 查看下面的rmdir()刪除一個 directory。 |
| 46 |
os.removedirs(path)
遞歸刪除目錄。 |
| 47 |
os.rename(src, dst)
重命名文件或目錄,從 src 到 dst |
| 48 |
os.renames(old, new)
遞歸地對目錄進(jìn)行更名,也可以對文件進(jìn)行更名。 |
| 49 |
os.rmdir(path)
刪除path指定的空目錄,如果目錄非空,則拋出一個OSError異常。 |
| 50 |
os.stat(path)
獲取path指定的路徑的信息,功能等同于C API中的stat()系統(tǒng)調(diào)用。 |
| 51 |
os.stat_float_times([newvalue])
決定stat_result是否以float對象顯示時間戳
|
| 52 |
os.statvfs(path)
獲取指定路徑的文件系統(tǒng)統(tǒng)計(jì)信息 |
| 53 |
os.symlink(src, dst)
創(chuàng)建一個軟鏈接 |
| 54 |
os.tcgetpgrp(fd)
返回與終端fd(一個由os.open()返回的打開的文件描述符)關(guān)聯(lián)的進(jìn)程組 |
| 55 |
os.tcsetpgrp(fd, pg)
設(shè)置與終端fd(一個由os.open()返回的打開的文件描述符)關(guān)聯(lián)的進(jìn)程組為pg。 |
| 56 |
os.tempnam([dir[, prefix]])
返回唯一的路徑名用于創(chuàng)建臨時文件。 |
| 57 |
os.tmpfile()
返回一個打開的模式為(w+b)的文件對象 .這文件對象沒有文件夾入口,沒有文件描述符,將會自動刪除。 |
| 58 |
os.tmpnam()
為創(chuàng)建一個臨時文件返回一個唯一的路徑 |
| 59 |
os.ttyname(fd)
返回一個字符串,它表示與文件描述符fd 關(guān)聯(lián)的終端設(shè)備。如果fd 沒有與終端設(shè)備關(guān)聯(lián),則引發(fā)一個異常。 |
| 60 |
os.unlink(path)
刪除文件路徑 |
| 61 |
os.utime(path, times)
返回指定的path文件的訪問和修改的時間。 |
| 62 |
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
輸出在文件夾中的文件名通過在樹中游走,向上或者向下。 |
| 63 |
os.write(fd, str)
寫入字符串到文件描述符 fd中. 返回實(shí)際寫入的字符串長度 |
1、print()函數(shù):打印字符串;
2、raw_input()函數(shù):從用戶鍵盤捕獲字符;
3、len()函數(shù):計(jì)算字符長度;
4、format()函數(shù):實(shí)現(xiàn)格式化輸出;
5、type()函數(shù):查詢對象的類型;
6、int()函數(shù)、float()函數(shù)、str()函數(shù)等:類型的轉(zhuǎn)化函數(shù);
7、id()函數(shù):獲取對象的內(nèi)存地址;
8、help()函數(shù):Python的幫助函數(shù);
9、s.islower()函數(shù):判斷字符小寫;
10、s.sppace()函數(shù):判斷是否為空格;
11、str.replace()函數(shù):替換字符;
12、import()函數(shù):引進(jìn)庫;
13、math.sin()函數(shù):sin()函數(shù);
14、math.pow()函數(shù):計(jì)算次方函數(shù);
15、os.getcwd()函數(shù):獲取當(dāng)前工作目錄;
16、listdir()函數(shù):顯示當(dāng)前目錄下的文件;
17、time.sleep()函數(shù):停止一段時間;
18、random.randint()函數(shù):產(chǎn)生隨機(jī)數(shù);
19、range()函數(shù):返回一個列表,打印從1到100;
20、file.read()函數(shù):讀取文件返回字符串;
21、file.readlines()函數(shù):讀取文件返回列表;
22、file.readline()函數(shù):讀取一行文件并返回字符串;
23、split()函數(shù):用什么來間隔字符串;
24、isalnum()函數(shù):判斷是否為有效數(shù)字或字符;
25、isalpha()函數(shù):判斷是否全為字符;
26、isdigit()函數(shù):判斷是否全為數(shù)字;
27、 lower()函數(shù):將數(shù)據(jù)改成小寫;
28、upper()函數(shù):將數(shù)據(jù)改成大寫;
29、startswith(s)函數(shù):判斷字符串是否以s開始的;
30、endwith(s)函數(shù):判斷字符串是否以s結(jié)尾的;
31、file.write()函數(shù):寫入函數(shù);
32、file.writeline()函數(shù):寫入文件;
33、abs()函數(shù):得到某數(shù)的絕對值;
34、file.sort()函數(shù):對書數(shù)據(jù)排序;
35、tuple()函數(shù):創(chuàng)建一個元組;
36、find()函數(shù):查找 返回的是索引;
37、dict()函數(shù):創(chuàng)建字典;
38、clear()函數(shù):清楚字典中的所有項(xiàng);
39、copy()函數(shù):復(fù)制一個字典,會修改所有的字典;
40、 get()函數(shù):查詢字典中的元素。
…………
Python 函數(shù)
函數(shù)是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。
函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。你已經(jīng)知道Python提供了許多內(nèi)建函數(shù),比如print()。但你也可以自己創(chuàng)建函數(shù),這被叫做用戶自定義函數(shù)。
定義一個函數(shù)
你可以定義一個由自己想要功能的函數(shù),以下是簡單的規(guī)則:
函數(shù)代碼塊以?def?關(guān)鍵詞開頭,后接函數(shù)標(biāo)識符名稱和圓括號()。
任何傳入?yún)?shù)和自變量必須放在圓括號中間。圓括號之間可以用于定義參數(shù)。
函數(shù)的第一行語句可以選擇性地使用文檔字符串—用于存放函數(shù)說明。
函數(shù)內(nèi)容以冒號起始,并且縮進(jìn)。
return [表達(dá)式]?結(jié)束函數(shù),選擇性地返回一個值給調(diào)用方。不帶表達(dá)式的return相當(dāng)于返回 None。
語法
def functionname( parameters ): ? "函數(shù)_文檔字符串"
function_suite
return [expression]
默認(rèn)情況下,參數(shù)值和參數(shù)名稱是按函數(shù)聲明中定義的順序匹配起來的。
實(shí)例
以下為一個簡單的Python函數(shù),它將一個字符串作為傳入?yún)?shù),再打印到標(biāo)準(zhǔn)顯示設(shè)備上。
實(shí)例(Python 2.0+)
def printme( str ): ? "打印傳入的字符串到標(biāo)準(zhǔn)顯示設(shè)備上"
print str
return
函數(shù)調(diào)用
定義一個函數(shù)只給了函數(shù)一個名稱,指定了函數(shù)里包含的參數(shù),和代碼塊結(jié)構(gòu)。
這個函數(shù)的基本結(jié)構(gòu)完成以后,你可以通過另一個函數(shù)調(diào)用執(zhí)行,也可以直接從Python提示符執(zhí)行。
如下實(shí)例調(diào)用了printme()函數(shù):
實(shí)例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 定義函數(shù)def printme( str ): ? "打印任何傳入的字符串"
print str
return
# 調(diào)用函數(shù)printme("我要調(diào)用用戶自定義函數(shù)!")printme("再次調(diào)用同一函數(shù)")
以上實(shí)例輸出結(jié)果:
我要調(diào)用用戶自定義函數(shù)!再次調(diào)用同一函數(shù)
參數(shù)傳遞
在 python 中,類型屬于對象,變量是沒有類型的:
a=[1,2,3]
a="Runoob"
以上代碼中,[1,2,3]?是 List 類型,"Runoob"?是 String 類型,而變量 a 是沒有類型,她僅僅是一個對象的引用(一個指針),可以是 List 類型對象,也可以指向 String 類型對象。
可更改(mutable)與不可更改(immutable)對象
在 python 中,strings, tuples, 和 numbers 是不可更改的對象,而 list,dict 等則是可以修改的對象。
不可變類型:變量賦值?a=5?后再賦值?a=10,這里實(shí)際是新生成一個 int 值對象 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,相當(dāng)于新生成了a。
可變類型:變量賦值?la=[1,2,3,4]?后再賦值?la[2]=5?則是將 list la 的第三個元素值更改,本身la沒有動,只是其內(nèi)部的一部分值被修改了。
python 函數(shù)的參數(shù)傳遞:
不可變類型:類似 c++ 的值傳遞,如 整數(shù)、字符串、元組。如fun(a),傳遞的只是a的值,沒有影響a對象本身。比如在 fun(a)內(nèi)部修改 a 的值,只是修改另一個復(fù)制的對象,不會影響 a 本身。
可變類型:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改后fun外部的la也會受影響
python 中一切都是對象,嚴(yán)格意義我們不能說值傳遞還是引用傳遞,我們應(yīng)該說傳不可變對象和傳可變對象。
python 傳不可變對象實(shí)例
實(shí)例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
def ChangeInt( a ): ? ?a = 10
b = 2ChangeInt(b)print b # 結(jié)果是 2
實(shí)例中有 int 對象 2,指向它的變量是 b,在傳遞給 ChangeInt 函數(shù)時,按傳值的方式復(fù)制了變量 b,a 和 b 都指向了同一個 Int 對象,在 a=10 時,則新生成一個 int 值對象 10,并讓 a 指向它。
傳可變對象實(shí)例
實(shí)例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可寫函數(shù)說明def changeme( mylist ): ? "修改傳入的列表"
mylist.append([1,2,3,4])
print "函數(shù)內(nèi)取值: ", mylist
return
# 調(diào)用changeme函數(shù)mylist = [10,20,30]changeme( mylist )print "函數(shù)外取值: ", mylist
實(shí)例中傳入函數(shù)的和在末尾添加新內(nèi)容的對象用的是同一個引用,故輸出結(jié)果如下:
函數(shù)內(nèi)取值: ?[10, 20, 30, [1, 2, 3, 4]]函數(shù)外取值: ?[10, 20, 30, [1, 2, 3, 4]]
參數(shù)
以下是調(diào)用函數(shù)時可使用的正式參數(shù)類型:
必備參數(shù)
關(guān)鍵字參數(shù)
默認(rèn)參數(shù)
不定長參數(shù)
必備參數(shù)
必備參數(shù)須以正確的順序傳入函數(shù)。調(diào)用時的數(shù)量必須和聲明時的一樣。
調(diào)用printme()函數(shù),你必須傳入一個參數(shù),不然會出現(xiàn)語法錯誤:
實(shí)例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可寫函數(shù)說明def printme( str ): ? "打印任何傳入的字符串"
print str
return
#調(diào)用printme函數(shù)printme()
以上實(shí)例輸出結(jié)果:
Traceback (most recent call last):
File "test.py", line 11, in module
printme()TypeError: printme() takes exactly 1 argument (0 given)
關(guān)鍵字參數(shù)
關(guān)鍵字參數(shù)和函數(shù)調(diào)用關(guān)系緊密,函數(shù)調(diào)用使用關(guān)鍵字參數(shù)來確定傳入的參數(shù)值。
使用關(guān)鍵字參數(shù)允許函數(shù)調(diào)用時參數(shù)的順序與聲明時不一致,因?yàn)?Python 解釋器能夠用參數(shù)名匹配參數(shù)值。
以下實(shí)例在函數(shù) printme() 調(diào)用時使用參數(shù)名:
實(shí)例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可寫函數(shù)說明def printme( str ): ? "打印任何傳入的字符串"
print str
return
#調(diào)用printme函數(shù)printme( str = "My string")
以上實(shí)例輸出結(jié)果:
My string
下例能將關(guān)鍵字參數(shù)順序不重要展示得更清楚:
實(shí)例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可寫函數(shù)說明def printinfo( name, age ): ? "打印任何傳入的字符串"
print "Name: ", name
print "Age ", age
return
#調(diào)用printinfo函數(shù)printinfo( age=50, name="miki" )
以上實(shí)例輸出結(jié)果:
Name: ?mikiAge ?50
默認(rèn)參數(shù)
調(diào)用函數(shù)時,默認(rèn)參數(shù)的值如果沒有傳入,則被認(rèn)為是默認(rèn)值。下例會打印默認(rèn)的age,如果age沒有被傳入:
實(shí)例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可寫函數(shù)說明def printinfo( name, age = 35 ): ? "打印任何傳入的字符串"
print "Name: ", name
print "Age ", age
return
#調(diào)用printinfo函數(shù)printinfo( age=50, name="miki" )printinfo( name="miki" )
以上實(shí)例輸出結(jié)果:
Name: ?mikiAge ?50Name: ?mikiAge ?35
不定長參數(shù)
你可能需要一個函數(shù)能處理比當(dāng)初聲明時更多的參數(shù)。這些參數(shù)叫做不定長參數(shù),和上述2種參數(shù)不同,聲明時不會命名?;菊Z法如下:
def functionname([formal_args,] *var_args_tuple ): ? "函數(shù)_文檔字符串"
function_suite
return [expression]
加了星號(*)的變量名會存放所有未命名的變量參數(shù)。不定長參數(shù)實(shí)例如下:
實(shí)例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可寫函數(shù)說明def printinfo( arg1, *vartuple ): ? "打印任何傳入的參數(shù)"
print "輸出: "
print arg1
for var in vartuple: ? ? ?print var
return
# 調(diào)用printinfo 函數(shù)printinfo( 10 )printinfo( 70, 60, 50 )
以上實(shí)例輸出結(jié)果:
輸出:10輸出:706050
匿名函數(shù)
python 使用 lambda 來創(chuàng)建匿名函數(shù)。
lambda只是一個表達(dá)式,函數(shù)體比def簡單很多。
lambda的主體是一個表達(dá)式,而不是一個代碼塊。僅僅能在lambda表達(dá)式中封裝有限的邏輯進(jìn)去。
lambda函數(shù)擁有自己的命名空間,且不能訪問自有參數(shù)列表之外或全局命名空間里的參數(shù)。
雖然lambda函數(shù)看起來只能寫一行,卻不等同于C或C++的內(nèi)聯(lián)函數(shù),后者的目的是調(diào)用小函數(shù)時不占用棧內(nèi)存從而增加運(yùn)行效率。
語法
lambda函數(shù)的語法只包含一個語句,如下:
lambda [arg1 [,arg2,.....argn]]:expression
如下實(shí)例:
實(shí)例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可寫函數(shù)說明sum = lambda arg1, arg2: arg1 + arg2
# 調(diào)用sum函數(shù)print "相加后的值為 : ", sum( 10, 20 )print "相加后的值為 : ", sum( 20, 20 )
以上實(shí)例輸出結(jié)果:
相加后的值為 : ?30相加后的值為 : ?40
return 語句
return語句[表達(dá)式]退出函數(shù),選擇性地向調(diào)用方返回一個表達(dá)式。不帶參數(shù)值的return語句返回None。之前的例子都沒有示范如何返回數(shù)值,下例便告訴你怎么做:
實(shí)例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可寫函數(shù)說明def sum( arg1, arg2 ): ? # 返回2個參數(shù)的和."
total = arg1 + arg2
print "函數(shù)內(nèi) : ", total
return total
# 調(diào)用sum函數(shù)total = sum( 10, 20 )
以上實(shí)例輸出結(jié)果:
函數(shù)內(nèi) : ?30
變量作用域
一個程序的所有的變量并不是在哪個位置都可以訪問的。訪問權(quán)限決定于這個變量是在哪里賦值的。
變量的作用域決定了在哪一部分程序你可以訪問哪個特定的變量名稱。兩種最基本的變量作用域如下:
全局變量
局部變量
全局變量和局部變量
定義在函數(shù)內(nèi)部的變量擁有一個局部作用域,定義在函數(shù)外的擁有全局作用域。
局部變量只能在其被聲明的函數(shù)內(nèi)部訪問,而全局變量可以在整個程序范圍內(nèi)訪問。調(diào)用函數(shù)時,所有在函數(shù)內(nèi)聲明的變量名稱都將被加入到作用域中。如下實(shí)例:
實(shí)例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
total = 0 # 這是一個全局變量# 可寫函數(shù)說明def sum( arg1, arg2 ): ? #返回2個參數(shù)的和."
total = arg1 + arg2 # total在這里是局部變量.
print "函數(shù)內(nèi)是局部變量 : ", total
return total
#調(diào)用sum函數(shù)sum( 10, 20 )print "函數(shù)外是全局變量 : ", total
以上實(shí)例輸出結(jié)果:
函數(shù)內(nèi)是局部變量 : ?30函數(shù)外是全局變量 : ?0