一、什麼是函式
函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的**段。
函式能提高應用的模組性,和**的重複利用率。你已經知道python提供了許多內建函式,比如print()。但你也可以自己建立函式,這被叫做使用者自定義函式。
語法
def 函式名(引數列表):
函式體
def func():
print('王小川好帥') #沒有返回值情況1,沒寫return;情況2,只寫return沒寫要返回的東西,情況3,return none。這裡是情況1
func()
有乙個返回值
a = 1
b = 2
def func():
sum = a + b
return sum
print(func())
有多個返回值
a = 1
b = 2
def func():
sum = a + b
return a,b
tuple1 = func() #可以用乙個變數結收多個返回值
print(tuple1) #(1, 2)
a1,b1 =func() #可以用與返回值數量相等的變數接收返回值
print(a1,b1) #1 2
三、關於函式引數
必須引數(位置引數)
def func(a, b): #必需引數須以正確的順序傳入函式。
print('%s是%s' %(a, b))
func('小明','好人') #呼叫時的數量必須和宣告時的一樣。
關鍵字引數
def func(a, b): #關鍵字引數和函式呼叫關係緊密,函式呼叫使用關鍵字引數來確定傳入的引數值。
print('%s是%s' %(a, b))
func(b ='好人',a = '小明') #使用關鍵字引數允許函式呼叫時引數的順序與宣告時不一致,因為 python 直譯器能夠用引數名匹配引數值。
預設引數
def func(a, b='村民'):
'''b是乙個預設引數。呼叫函式時,如果沒有傳遞引數,則會使用預設引數。
位置先必須引數再預設引數
'''print('%s是%s' %(a, b))
func('小明')
func('小北','狼人') #位置傳參
func(b='女巫', a='小飛') #關鍵字傳參
不定長引數(動態引數)
你可能需要乙個函式能處理比當初宣告時更多的引數。這些引數叫做不定長引數
加了星號 * 的引數會以元組(tuple)的形式匯入,存放所有未命名的變數引數。
def func(*args):
print(args)
func(1,2,3,4,5) #如果在函式呼叫時沒有指定引數,它就是乙個空元組。
#(1, 2, 3, 4, 5)
加了兩個星號 ** 的引數會以字典的形式匯入
def func(**args):
print(args)
func(a=1, b=2)
#
python3 自定義比較函式
python 2 中支援類似 c 中 cmp 的寫法 python 3 放棄了這一用法 官方說明 所以不想寫lambda的話,加一句cmp to key 就行了 def 比較函式 return 原來的方式是 sorted cmp 比較函式 現在的方式是 from functools import c...
python3 自定義比較器
摘要 在一些場景中,需要重新對已有的資料排序,可能所給出的資料型別或者資料數量較多,需要給定排序規則。import functools def by score t1,t2 if t1 0 t2 0 return 1 elif t1 0 t2 1 return 1 elif t1 1 t2 1 re...
Python3中自定義包和匯入自定義包
第一篇部落格,寫得質量可能會不高,但希望能開個好頭,努力成為優秀的程式設計師!今天在惡補python基礎知識,發現我對包,庫,模組的定義非常模糊,於是我回頭看了一下基礎知識,也是一時興起想讓跟我一樣一開始有些困惑的人避坑!要想知道什麼是包,得先了解一下模組的概念!知道了模組,那緊接著看看包 上面是我...