在程式設計過程中可以定義自己想要實現的功能的函式,語法如下:
def 函式名(引數列表): #函式名可以隨意編寫,但最好不要與內建函式重複,不然內建函式將被替換成你所定義的函式
函式體
例:
def f(a,b,c,d):
return a,b,c,d
c=f(1,2,3,4)
print(c)
c,d,x,y=f(1,2,4,3)
print(c,d,x,y)
輸出結果:
(1, 2, 3, 4)
1 2 4 3
例:
def test(x): #引數列表裡的引數為形參
x=10
print('-----',x)
x=5 #這裡的x為實參,雖然與形參一樣,但是卻是不同的兩個值
test(x)
print('--+--',x)
輸出結果:
----- 10
--+-- 5
可變引數和不可變引數:
在之前的學習中,我們知道不可變型別為:字串、元組和數值;可變型別為:列表、字典、集合。在函式中對不可變引數重新賦值後,函式的輸出結果則會輸出新賦值,而對可變引數中的某個元素重新賦值後,可變引數本身沒有動,只是將內部元素進行了修改。
例:
def a(x):
x=10
print(x)
s=1a(s)
def b(y):
y[2]=14
print(y)
k=[1,2,3,4,5,6]
b(k)
輸出結果:
10
[1, 2, 14, 4, 5, 6]
函式的引數主要分為五個型別:必需引數、預設引數、可變引數、關鍵字引數和命名關鍵字引數,這5種引數都可以組合使用,除了可變引數無法和命名關鍵字引數混合。但是請注意,引數定義的順序必須是:必需引數、預設引數、可變引數/命名關鍵字引數和關鍵字引數。
例:
def f2(a, b, c=0, *e, x, d,**k):
print('a =', a, 'b =', b, 'c =', c, 'e=', e,'x=',x,'d=',d,'k =', k)
args = (1, 2, 3, 4)
kw =
f2(*args,**kw)
輸出結果:
a = 1 b = 2 c = 3 e= (4,) x= # d= 99 k = {}
必需引數須以正確的順序傳入函式。呼叫時的數量必須和宣告時的一樣。
例:
#可寫函式說明
def printme( str ):
print (str)
return
#呼叫printme函式
printme( str = "hello")
hello
呼叫函式時,如果沒有傳遞引數,則會使用預設引數。以下例項中如果沒有傳入 age 引數,則使用預設值:
例:
#可寫函式說明
def printinfo( name, age = 35 ):
print ("名字: ", name)
print ("年齡: ", age)
return
#呼叫printinfo函式
printinfo( age=30, name="leo" )
print ("------------------------")
printinfo( name="leo" )
輸出結果:
名字: leo
年齡: 30
------------------------
名字: leo
年齡: 35
關鍵字引數和函式呼叫關係緊密,函式呼叫使用關鍵字引數來確定傳入的引數值。
使用關鍵字引數允許函式呼叫時引數的順序與宣告時不一致,因為 python 直譯器能夠用引數名匹配引數值。
例:
#可寫函式說明
def printinfo( name, age ):
print ("名字: ", name)
print ("年齡: ", age)
return
#呼叫printinfo函式
printinfo( age=30, name="leo" )
輸出結果:
名字: leo
年齡: 30
你可能需要乙個函式能處理比當初宣告時更多的引數。這些引數叫做不定長引數,和上述引數不同,宣告時不會命名。基本語法如下:
def a(*args): #主要區別為加了『*』符號
函式體return
例:
# 可寫函式說明
def printinfo( arg, *args ):
print ("輸出: ")
print (arg)
for i in args:
print (i)
return
# 呼叫printinfo 函式
printinfo( 10 )
printinfo( 70, 60, 50 )
輸出結果:
輸出:
10輸出:
7060
50
全域性變數
在乙個模組中最高端別的變數有全域性作用域,除非被刪除,否則能存活到程式執行結束。所有函式都能訪問全域性變數。
區域性變數
定義在函式內的變數有區域性作用域。
依賴於定義變數的函式現階段是否處於活動狀態。
呼叫函式時,區域性變數產生,暫時存在。
一旦函式執行完,區域性變數將會被釋放。
注:
同乙個函式中,不允許有同名區域性變數
不同函式中,可以有同名區域性變數
同乙個程式中,全域性變數和區域性變數同名時,區域性變數具有更高的優先順序
例:
total = 0 # 這是乙個全域性變數
# 可寫函式說明
def sum( arg1, arg2 ):
#返回2個引數的和."
total = arg1 + arg2 # total在這裡是區域性變數.
print ("函式內是區域性變數 : ", total)
return total
#呼叫sum函式
sum( 10, 20 )
print ("函式外是全域性變數 : ", total)
輸出結果:
函式內是區域性變數 : 30
函式外是全域性變數 : 0
但是有時候我們想要函式中修改外部作用域的變數時,就需要global方法來實現了。
例:
num = 1
def fun1():
global num # 需要使用 global 關鍵字宣告
print(num)
num = 2
print(num)
fun1()
輸出結果:
1
2
Python基礎 函式
函式設計原則 函式有多種方法獲得輸入產生輸出,一般使用引數作為輸入,return語句配合可變引數的改變作為輸出。函式輸入 函式輸出 def fun args returndef語句 def建立了乙個函式物件並將其賦值給乙個變數。def語句是實時執行的,在模組匯入時執行或者在互動模式下輸入時執行。始終...
python基礎 函式
def funcname params return value 如果沒有return 最後會返回none,如果只寫return 會返回none 返回值個數為乙個,但是可以返回tuple,表面上返回多個值 def f1 return x,y x,y f1 def nop passdef functe...
Python 函式基礎
定義 函式是指將一組語句的集合通過乙個名字 函式名 封裝起來,要想執行這個函式,只需呼叫其函式名即可 為什麼使用函式 減少重複 使程式變的可擴充套件使程式變得易維護 1 定義乙個函式 2def func 使用def關鍵字定義函式 接函式名,括號內可以傳遞引數 3print hello world 函...