Task4
python基礎(chǔ)?
1.函數(shù)關(guān)鍵字
Python定義函數(shù)時(shí)使用 def 關(guān)鍵字
2.函數(shù)的定義
函數(shù)是組織好的,可重復(fù)使用的誊垢,用來實(shí)現(xiàn)單一掉弛,或相關(guān)聯(lián)功能的代碼段症见∥棺撸可以自己定義一個(gè)函數(shù)。
--函數(shù)-封裝了獨(dú)立功能谋作,可以直接調(diào)用
--函數(shù)名(參數(shù))
以下是簡(jiǎn)單的定義規(guī)則:
函數(shù)代碼塊以 def 關(guān)鍵詞開頭芋肠,后接函數(shù)標(biāo)識(shí)符名稱和圓括號(hào)()。
任何傳入?yún)?shù)和自變量必須放在圓括號(hào)中間遵蚜。圓括號(hào)之間可以用于定義參數(shù)帖池。
函數(shù)的第一行語(yǔ)句可以選擇性地使用文檔字符串—用于存放函數(shù)說明。
函數(shù)內(nèi)容以冒號(hào)起始吭净,并且縮進(jìn)睡汹。
return [表達(dá)式] 結(jié)束函數(shù),選擇性地返回一個(gè)值給調(diào)用方寂殉。不帶表達(dá)式的return相當(dāng)于返回 None囚巴。
語(yǔ)法:
def functionname( parameters ):
? "函數(shù)_文檔字符串"
? function_suite
? ? return [expression]
案例:
#自定義函數(shù)
def function_name (str):
? ? "打印傳入的字符串"
? ? print(str)
? ? return(0);
#調(diào)用自定義函數(shù)
function_name("自定義函數(shù)")
function_name("調(diào)用自定義函數(shù)")
3.函數(shù)參數(shù)與作用域
函數(shù)參數(shù):
必選參數(shù)
默認(rèn)參數(shù)
可變參數(shù)
關(guān)鍵字參數(shù)
命名關(guān)鍵字參數(shù)
1)必選參數(shù)
必需參數(shù)須以正確的順序傳入函數(shù)。調(diào)用時(shí)的數(shù)量必須和聲明時(shí)的一樣友扰。
def my_print(str):
? ? print(str)
? ? return
my_print() # 將會(huì) throw TypeError,因?yàn)楸剡x參數(shù)彤叉,必須傳,若不傳將會(huì)拋異常村怪。
2)默認(rèn)參數(shù)
調(diào)用函數(shù)時(shí)秽浇,如果沒有傳遞參數(shù),則會(huì)使用默認(rèn)參數(shù)甚负。需要注意柬焕,默認(rèn)參數(shù)必須指向不可變對(duì)象审残。若指向?yàn)榭勺儗?duì)象,將會(huì)導(dǎo)致問題击喂。
def my_print(str, age = 18):
? ? print('name: ', str)
? ? print('age: ', age)
? ? return
3)可變參數(shù)
一個(gè)函數(shù)能處理比當(dāng)初聲明時(shí)更多的參數(shù)维苔。這些參數(shù)叫做不定長(zhǎng)參數(shù)。
def my_print(arg1, *args):
? ? print("輸出:")
? ? print(arg1)
? ? print(args)
? ? return
my_print(1, 2, 3, 4)
輸出:
1
(2, 3, 4)
加了星號(hào) * 的參數(shù)會(huì)以元組(tuple)的形式導(dǎo)入懂昂,存放所有未命名的變量參數(shù)介时。
4)關(guān)鍵字參數(shù)
關(guān)鍵字參數(shù)允許函數(shù)調(diào)用時(shí)參數(shù)的順序與聲明時(shí)不一致,Python 解釋器能夠用參數(shù)名匹配參數(shù)值凌彬。
def my_print(name, age):
? ? print('姓名:', name)
? ? print('年齡:', age)
my_print(age=18, name='小明')
def person(name, age, **kw):
? ? print('name:', name, 'age:', age, 'other:', kw) # kw會(huì)自動(dòng)將多個(gè)參數(shù)沸柔,組裝成 dict
person('小明', 18, sex='female', school='南山小學(xué)')?
5)命名關(guān)鍵字參數(shù)
如果要限制關(guān)鍵字參數(shù)的名字,就可以用命名關(guān)鍵字參數(shù)铲敛。和關(guān)鍵字參數(shù)kw不同褐澎,命名關(guān)鍵字參數(shù)需要一個(gè)特殊分隔符,后面的參數(shù)被視為命名關(guān)鍵字參數(shù)伐蒋。
def person(name, age, *, city, job):
? ? print(name, age, city, job)
person('小明', 18, city='深圳', job='程序員')
6)多參數(shù)組合
def f1(a, b, c=0, *args, **kw):
? ? print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
def f2(a, b, c=0, *, d, **kw):
? ? print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
定義的順序必須是:必選參數(shù)工三、默認(rèn)參數(shù)、可變參數(shù)先鱼、命名關(guān)鍵字參數(shù)和關(guān)鍵字參數(shù)俭正。
作用域:
函數(shù)內(nèi)是一個(gè)作用域,(一般情況)外面是訪問不到的焙畔。當(dāng)進(jìn)入一個(gè)函數(shù)時(shí)掸读,一個(gè)新的作用域就被創(chuàng)建了。函數(shù)內(nèi)的x和外面的x不是一個(gè)x宏多,x是不可變量儿惫。
函數(shù)里可以訪問外面的變量
函數(shù)里不可以修改外部定義的變量
4.函數(shù)返回值
1)函數(shù)返回值可以是任意的數(shù)據(jù)類型
2)如果有返回值:必須要用變量接收才會(huì)有效果
3)函數(shù)可以沒有返回值,默認(rèn)返回給None
其中函數(shù)的返回值為None有三種情況:
不寫返回值
只寫一個(gè)return
return None (幾乎不用)
4)return的作用:結(jié)束一個(gè)函數(shù)的執(zhí)行
5)函數(shù)的返回值不為None,有返回值
返回一個(gè)值(一個(gè)變量)
返回多個(gè)值(多個(gè)變量)伸但,多個(gè)值之間用逗號(hào)區(qū)分
接收:可以用一個(gè)變量接收肾请,以元組的形式返回
例:
def move(x, y):
? ? return x, y
5.file
1)打開文件方式(讀寫兩種方式)
f = open('./task4_3.py', 'r')
print(f.read())
f.close()
with open('./task4_4.py', 'a') as f:
? ? f.write('tiancity')
2)文件對(duì)象的操作方法
file.open 關(guān)閉文件。關(guān)閉后文件不能再進(jìn)行讀寫操作更胖。
file.read([size] 從文件讀取指定的字節(jié)數(shù)铛铁,如果未給定或?yàn)樨?fù)則讀取所有。
file.readline 讀取整行函喉,包括 “\n” 字符避归。
3)學(xué)習(xí)對(duì)excel及csv文件進(jìn)行操作
excel 讀操作
import xlrd
read
excel = xlrd.open_workbook('./user_info.xlsx')
sheet = excel.sheets()[0]
row = sheet.row_values(0)
讀取excel文件工作表中第1個(gè)工作簿的第1行第2列的數(shù)據(jù)
excel = xlrd.open_workbook('./user_info.xlsx')
sheet = excel.sheets()[0]
cell = sheet.cell(0, 1)
print(cell, type(cell))
cellValue = sheet.cell(0, 1).value
print(cellValue, type(cellValue)
循環(huán)遍歷
excel = xlrd.open_workbook('./user_info.xlsx')
sheet = excel.sheet_by_index(0)
for i in range(sheet.nrows):
? ? print(sheet.row_values(i))
excel 寫操作
import xlwt
write excel
excel = xlwt.Workbook()
sheet = excel.add_sheet("test1")
sheet.write(0, 1, 'tiancity')
excel.save('excel.xls')
6.os模塊
`os.sep:取代操作系統(tǒng)特定的路徑分隔符
os.name:指示你正在使用的工作平臺(tái)。比如對(duì)于Windows管呵,它是’nt’梳毙,而對(duì)于Linux/Unix用戶,它是’posix’捐下。
os.getcwd:得到當(dāng)前工作目錄账锹,即當(dāng)前python腳本工作的目錄路徑萌业。
os.getenv()和os.putenv:分別用來讀取和設(shè)置環(huán)境變量
os.listdir():返回指定目錄下的所有文件和目錄名
os.remove(file):刪除一個(gè)文件
os.stat(file):獲得文件屬性
os.chmod(file):修改文件權(quán)限和時(shí)間戳
os.mkdir(name):創(chuàng)建目錄
os.rmdir(name):刪除目錄
os.removedirs(r“c:\python”):刪除多個(gè)目錄
os.system():運(yùn)行shell命令
os.exit():終止當(dāng)前進(jìn)程
os.linesep:給出當(dāng)前平臺(tái)的行終止符。例如奸柬,Windows使用’\r\n’生年,Linux使用’\n’而Mac使用’\r’
os.path.split():返回一個(gè)路徑的目錄名和文件名
os.path.isfile()和os.path.isdir()分別檢驗(yàn)給出的路徑是一個(gè)目錄還是文件
os.path.existe():檢驗(yàn)給出的路徑是否真的存在
os.listdir(dirname):列出dirname下的目錄和文件
os.getcwd():獲得當(dāng)前工作目錄
os.curdir:返回當(dāng)前目錄(’.’)
os.chdir(dirname):改變工作目錄到dirname
os.path.isdir(name):判斷name是不是目錄,不是目錄就返回false
os.path.isfile(name):判斷name這個(gè)文件是否存在廓奕,不存在返回false
os.path.exists(name):判斷是否存在文件或目錄name
os.path.getsize(name):或得文件大小抱婉,如果name是目錄返回0L
os.path.abspath(name):獲得絕對(duì)路徑
os.path.isabs():判斷是否為絕對(duì)路徑
os.path.normpath(path):規(guī)范path字符串形式
os.path.split(name):分割文件名與目錄(事實(shí)上,如果你完全使用目錄桌粉,它也會(huì)將最后一個(gè)目錄作為文件名而分離蒸绩,同時(shí)它不會(huì)判斷文件或目錄是否存在)
os.path.splitext():分離文件名和擴(kuò)展名
os.path.join(path,name):連接目錄與文件名或目錄
os.path.basename(path):返回文件名
os.path.dirname(path):返回文件路徑