《毫無障礙學Python》鄧文淵著 學習筆記
1.函數
1.1 函數基本
(1)語法:
.
def 函數名(參數1,參數2,參數3,…): #參數可無
程序塊
return 返回值1,返回值2,返回值3… #返回值可無
#輸入攝氏求華氏
def cToF(c):
f = c*1.8+32
return f
inputc = float(input("Plaese input ℃:"))
print("The 華氏度 is %.1f"%cToF(inputc))
(2)參數順序:
def A(a1,a2):
return a1*a2
a = A(1,2) #同下及下下
a = A(a1 = 1,a2 = 2)#同上及下
a = A(a2 = 2,a1 = 1)#同上及上上
(3)參數缺省:缺省值參數必須在後
def GetArea(w,h=10): #缺省值參數必須爲後
return w*h
rel1 = GetArea(6) #rel1 = 6*10
(4)不定參函數
語法:
*def 函數名稱(參數)
…
#不定參函數解決求n個參數的總和
def calsum(*params): #python通過元組的方式把所有參數存於params元組中
total = 0
for param in params:
total +=param
return total
print(calsum(2,3))
print(calsum(2,3,4))
print(calsum(2,3,4,5))
(5)變量有效範圍 :
- 全局變量:定義在函數外的變量,有效範圍整個python文件
- 局部變量:定義在函數內的變量,在函數內有效
局部變量和全局變量同名,函數內使用局部,函數外使用全局
def scope():
v1 = 1
print(v1,v2)
v1 = 10
v2 = 20
scope() #v1 == 1,v2 == 20
print(v1,v2) #v1 == 10,v2 == 20
若要在函數內使用全局變量,需要在函數內部用global關鍵字聲明
def so():
global v1 #聲明v1是全局變量
v1 = 1 #把全局變量的值改爲1
v2 = 2
print(v1,v2)
v1 = 10
v2 = 20
so() # 1 2
print(v1,v2) # 1 20
(6)系統內置函數
python 常用系統內置函數 |
---|
abs(x) 返回x的絕對值 |
chr(x) 返回x所表示的字符 #chr(65) 即A |
divmod(x,y) 返回x除以y的商及餘數組成的元組 #divmod(44,6) 即 (7,2) |
float(x) 將x轉換爲浮點數 |
hex(x) 將x轉化爲十六進制數 |
int(x) 將x轉換爲整數 |
len(x) 返回參數x的元素個數 len([1,3,5,7]) 即4 |
max(列表型參數) 返回列表型參數中最大值 |
min(列表型參數) 返回列表型參數中最小值 |
oct(x) 將x轉化爲八進制數 |
ord(x) 返回x的Unicode編碼 ord(“我”) ->25105 |
pow(x,y) x的y次方 pow(x,y,z) 表示x的y次方除以z的餘數 |
round(x) 返回x的四捨六入 round(x,y) 4及以下舍,6及以上進位,5則前一位偶舍奇進round() round(3.65,1)->3.6,round(3.75,1)->3.8 |
sorted(列表) 由小到大排列 默認 小->大 排 若用reverse = true作爲第二個參數,則大->小 |
str(x) 將x轉換成字符串 |
sum(列表) 計算列表中元素總和 |
type(對象) 返回對象的數據類型 |
innum = 0
list1 = []
while(innum!=-1):
innum = int(input("Please input a positive integer(end of -1):"))
list1.append(innum)
list1.pop()
print("integer number:%d"%len(list1))
print("max is %d"%max(list1))
print("min is %d"%min(list1))
print("sum is %d"%sum(list1))
print("from large to small:{}".format(sorted(list1,reverse = True)))
2.導入包
python有很多內建包(package,包,亦稱模塊)
- 內建包導入1:import 包名稱
import random # random產生隨機數的內建包
包中有許多函數,使用語法:包名稱.函數名稱
- 包導入2: from 包名稱 import , 則使用包中函數可不寫包名,可能產生同名函數錯誤風險,則3
- 包導入3: from 包名稱 import 函數一,函數二,…
- 包導入4: import 包名稱 as 別名 則可用 別名.函數名 調用
3.文件管理 和 目錄管理
os (提供創建目錄、刪除目錄、刪除文件、執行操作系統命令等),使用時必須導入os包
remove()方法:刪除指定文件,一般結合os.path的exists()方法使用,即先檢查該文件是否存在,再決定是否刪除該文件
import os
file = "myFile.txt"
if os.path.exists(file):
os.remove(file)
else:
print(file+" coule not be found!")
.
mkdir()方法:可創建指定名稱的目錄,執行後在當前目錄創建目錄,若該目錄存在則會產生錯誤,所以一般先檢查該目錄是否存在,再決定是否創建該文件(創建一級目錄)
import os
dir = "myDir"
if not os.path.exists(dir):
os.mkdir(dir)
else:
print(dir+" already exists!")
os.makedirs()函數可創建多級目錄
os.makedirs('d:\\books\\book') #os.makedirs()函數創建多級目錄
.
rmdir()方法:可刪除指定目錄,刪除目錄前必先刪除其中文件,一般檢查目錄是否存在再決定是否刪除目錄
import os
dir = "MyDir"
if os.path.exists(dir):
os.rmdir(dir)
else:
print(dir+" dir coule not be found!")
.
system()方法:執行操作系統命令
import os
cur_path = os.path.dirname(__file__) #取得當前路徑
os.system("cls") #清屏
os.system("mkdir dir2") #創建dir2目錄
os.system("copy ossystem.py dir2//copyfile.py") #複製文件
file = "d://python_code//dir2//copyfile.py"
os.system("notepad "+file) #以記事本打開copyfile.py文件
os.path 用於處理文件路徑及文件名稱、檢查文件或路徑是否存在或計算文件大小
首先導入os.path 包 import os.path
包含方法:
abspath() 返回文件完整路徑名 |
basename() 返回文件路徑名最後部的文件或路徑名,若測試的是文件返回文件名,測試的是路徑會返回路徑最後部分 |
dirname() 返回指定文件完整路徑,用dirname(file)則可以取得當前目錄路徑 |
exists() 檢查指定文件或路徑是否存在 |
getsize() 返回指定文件大小(Bytes) |
isabs() 檢查指定路徑是否是爲完整路徑 |
isfile() 檢查指定路徑是否爲文件 |
isdir() 檢查指定路徑是否爲目錄 |
split() 把文件路徑分割爲路徑和名稱 |
splitdrive() 把文件路徑名分割爲磁盤名和文件路徑名 |
join() 把路徑和文件名和併成完整路徑 |
import os.path
cur_path2 = os.path.dirname(__file__) #獲取當前目錄路徑
print("current file rout is "+cur_path2)
filename = os.path.abspath(__file__)
if os.path.exists(filename):
print("當前目錄路徑爲:"+filename)
print("文件大小:",os.path.getsize(filename))
basename = os.path.basename(filename)
print("路徑最後的文件名爲:"+basename)
dirname = os.path.dirname(filename)
print("當前文件路徑爲:"+dirname)
print("是否爲目錄:",os.path.isdir(filename))
fullpath,fname = os.path.split(filename)
print("目錄路徑:"+fullpath)
print("文件名稱:"+fname)
Drive,fpath = os.path.splitdrive(filename)
print("盤名:"+Drive)
print("路徑名稱:"+fpath)
fullpath = os.path.join(fullpath+"\\"+fname)
print("合併路徑爲="+fullpath)
os.walk 用於搜索指定目錄及其子目錄,它會返回一個包含三個元素的元組分別爲:文件夾名、下一層文件夾列表、文件夾中所有文件列表
import os
cur_path = os.path.dirname(__file__) # 取得當前路徑
sample_tree = os.walk(cur_path)
for dirname2,subdir,files in sample_tree:
print("文件路徑:",dirname2)
print("目錄列表:",subdir)
print("文件列表:",files)
print()
shutil包 一個可跨平臺的文件處理包
導入包:import shutil
常用方法: |
---|
copy(src,dst) 複製src(源文件)到dst(目標文件) |
copytree(src,dst) 將src目錄及目錄中所有文件複製到dst |
rmtree(dir) 刪除dir目錄和目錄中所有文件 |
move(src,dst) 將src目錄轉移到dst(轉移後源文件被刪除) |
glob包 可返回指定條件下的文件列表
導包 import glob
glob.glob(“路徑名稱”) #glob.glob方法指定條件的文件列表,文件路徑可指定確定名稱,也可使用通配符" * "
import glob
files = glob.glob("day20190331筆記.py")+glob.glob("day*.py")+glob.glob("*.txt")
for file in files:
print(file)