file.read(1) 讀取一個字符
file.seek(0) 將file的指針只想位置0,即文件開始位置
file.tell() 顯示文件指針當前位置
file5 = open("name.txt")
fior line in file5.readlines():
print(line)
表示逐行讀取文件
file.readline() 表示讀取一行文件
file.open("name.txt","w')表示可以寫入該文件,默認為r,只讀
file.open("name.txt","a')表示可以寫入該文件,並且在該文件末尾添加新的內容,如果是w就會覆蓋原來的內容
try:
檢測異常
except Exception[,reson]:
except ValueError:
except [ValueError,KeyError]: //多個類型的異常捕獲
異常處理
finally:
無論異常是否發生,都要執行
try:
print(1/0)
except ZeroDivisionError as c:
print("0不能作為除數 %s" %c)
捕獲所有的異常
try:
print(1/0)
except Exception as c:
print("0不能作為除數 %s" %c)
try:
raiseNameError("helloworld)
except NameError:
print("my custom error")
file5 = open("name.txt",encoding="GB18038")支持中文的一個編碼
字典的格式
dict{"哈希值":"對象","length":180,"width":80}
dict1={'x':1."y":2}
dict1["z"]=3 //給字典增加一個新的值
//讀取字典中的所有值
for each_key in dict1.keys():
print(“%s 的值式 %s”%(each_key,dict1[each_key])) //輸出key和value
列表推導式
blist=[i*i for i in range(1,11) if(i%2==0)]
字典推導式
z_num={}
fir i in zodiac_name:
z_num[i]=0
推導之後 z_num ={i:0 for i in zodiac_name}
22.函數
line.strip("\n) 刪除換行符
data.split("|") 把字符串用符號“|”分開得到一個列表
with open("sanguo.txt",encoding="GB18038")as f://with會把open得到的值賦值給f
data =f.read().replace("\n","")//讀取f中的內容,並且將換行符替換為空
num=re.find(String,data) //需要import re,這個表示String在data中出現的次數,如果出現三次,那麼返回值num就會得到一個list=[String,String,String],如果要的得到數字,可以用len(num)
23.函數的可變長參數
def func(a,b,c)
print("a= %s" %a)
print("b= %s" %b)
print("c= %s" %c)
func(1,2,3)得到1,2,3
func(1,c=3,b=2) a,b,c仍然得到的結果是1,2,3, 這個和java不同,可以改變參數位置
def howlong(first,*other)://參數至少要一個,後面隨意多少個
print(1+len(other))
howlong(1) //得到1
howlong(1,5543,543)//得到3
24.函數的作用域
var=123
def func():
global var //加了這句,會影響外部的var的值
var=456
print(var)
func()//得到456,
print(var)//得到123 ,因為這個變量只在函數內部變成456,若是在func中 的 var 前面加一個關鍵字 global,那麼得到的結果就是456,因為加了global就可以看成是全局變量的賦值了
25.函數的迭代器和生成器
list=[1,2,3]
it =iter(list)
print(next(it)) //一次輸出一個值,超過三次就會報錯,因為list的長度是3
def frange(start,stop,step):
x=start
while x<stop:
yield x //使用yield可以讓函數一次返回一個值,如果沒有這句,下方調用就會報錯
x+=step
for i in frange(10,20,0.5):
print(i)
26 Lambda 表達式
lambda x: x<=(month,day) 和下面的函數相等
def function(x)
return x<=(month,day)
lambda x,y:x+y 和下面函數相等
def add(x,y)
return x+y
add(3,5)
lambda item:item1 和下面的函數相等
def func2(item):
return item[1]
adict={'a':'aa','b':'bb'}
for i in adict.items():
print(func2(i))
31.裝飾器的使用
def tips(func):
def nei(a,b):
print("start")
func(a,b)
print("end")
return nei
@tips
def add(a,b):
print(a+b)
add(4,5) //輸出結果為 start end
print(add(4,5)) //輸出屆比上面多了一個None
def new_tips(argv):
def tips(func):
def nei(a,b):
print("start %s %s" %(argv,func.__name__)) //可以接受外部的參數argv,獲取調用函數的名字
func(a,b)
print("end")
return nei
return tips
@new_tips("add1") //括號中的參數,和方法不是同一個東西
def add(a,b):
print(a+b)
@new_tips("sub")
def sub(a,b):
print(a-b)
add(4,5)
sub(4,5)
結果如下所示:
start add1 add
9
end
start sub sub
-1
end
32.自定義上下文管理器
fd=open("name.txt")
try:
for line in fd:
print(line)
finally:
fd.close()
下面的代碼和上面代碼功能相同,當使用with打開文件時,若開出現異常那麼with會自動掉用close函數來關閉文件
with open ("name.txt") as f:
for line in f:
print(line)
33.模塊的定義
import os //庫函數
import time as t//庫函數 t.time()
import matplotlib as m //庫函數,可以把函數的名稱簡化然後使用
from time import sleep //這樣寫就可以直接使用sleep(),不需time作為前綴,但是不建議這樣寫,因為在其他的庫函數裡面可能也會有sleep這個方法,防止代碼混淆
sleep()
import mymode //mymode自己寫的模塊,在另一個文件中調用這個模塊的print方法,這個print是自定義的,不是系統的print
mymode.print()
34.語法規范
PEP8 編碼規范 https://www.python.org/dev/peps/pep-0008/
在 DOS 下輸入 pip3 install autopep8
在pycharm裡面右鍵鼠標使用pep8,就可以對代碼作自動的格式整理