1. 函數關鍵字
函數代碼塊以 def 關鍵詞開頭。
2. 函數的定義
語法:
def 函數名(參數列表):
函數體
Example:
def my_abs(x):
if x >= 0:
return x
else:
return -x
空函數
用 pass
佔位符,可以讓代碼執行,但什麼都不做。主要用於,todo 場景。
def nop():
pass
3. 函數參數與作用域
函數的參數
- 必選參數
- 默認參數
- 可變參數
- 關鍵字參數
- 命名關鍵字參數
必選參數
必需參數須以正確的順序傳入函數。調用時的數量必須和聲明時的一樣。
def my_print(str):
print(str)
return
my_print() # 將會 throw TypeError,因爲必選參數,必須傳,若不傳將會拋異常。
默認參數
調用函數時,如果沒有傳遞參數,則會使用默認參數。需要注意,默認參數必須指向不可變對象。若指向爲可變對象,將會導致問題。
def my_print(str, age = 18):
print('name: ', str)
print('age: ', age)
return
可變參數
一個函數能處理比當初聲明時更多的參數。這些參數叫做不定長參數。
def my_print(arg1, *args):
print("輸出:")
print(arg1)
print(args)
return
my_print(1, 2, 3, 4)
輸出:
1
(2, 3, 4)
加了星號 * 的參數會以元組(tuple)的形式導入,存放所有未命名的變量參數。
關鍵字參數
關鍵字參數允許函數調用時參數的順序與聲明時不一致,Python 解釋器能夠用參數名匹配參數值。
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會自動將多個參數,組裝成 dict
person('小明', 18, sex='female', school='南山小學')
命名關鍵字參數
如果要限制關鍵字參數的名字,就可以用命名關鍵字參數。和關鍵字參數kw不同,命名關鍵字參數需要一個特殊分隔符,後面的參數被視爲命名關鍵字參數。
def person(name, age, *, city, job):
print(name, age, city, job)
person('小明', 18, city='深圳', job='程序員')
多參數組合
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)
定義的順序必須是:必選參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數。
4. 函數返回值
當 return 無返回值時
返回結果爲, None
值。
返回多值
def move(x, y):
return x, y
返回值是一個tuple
5. file
打開文件方式(讀寫兩種方式)
f = open('./task4_3.py', 'r')
print(f.read())
f.close()
with open('./task4_4.py', 'a') as f:
f.write('tiancity')
文件對象的操作方法
- file.open 關閉文件。關閉後文件不能再進行讀寫操作。
- file.read([size] 從文件讀取指定的字節數,如果未給定或爲負則讀取所有。
- file.readline 讀取整行,包括 "\n" 字符。
- ...