1.函式
函式就是一段具有特點功能的、可重用的陳述句組,
在Python中函式是以關鍵詞 def 開頭,空格之后連接函式名和圓括號(),最后一個冒號:結尾,
函式名只能包含字串、下劃線和數字且不能以數字開頭,雖然函式名可以隨便起,但我們給函式起名字還是要盡量簡短,并表達函式功能,
每一個函式都應該對功能和引數進行相應的說明,應該寫在函式下面第一行,以增強代碼的可讀性,
def strlen(s):
“”“ calulate the length of the string ”“”
len = 0
for x in s:
len = len + 1
return len
空函式
def null_fun():
"""This is a null fun"""
pass #pass陳述句什么都不做,實際上用來作為占位符
不寫return與寫入return None的效果相同,回傳的只都是None
只寫一個return后面不加任何東西的時候與寫return None的效果一樣
如果在函式中有多個return,只執行第一個return,
多回傳值函式
def mult_return():
name='Lily'
age=18
return name, age
c= mult_return()
print(c)
# ('Lily', 18)
n, a = mult_return()
print(n, a)
# Lily 18
當用一個變數接識訓傳值的時候,收到的是一個元組,這是因為在python中把用逗號分割的 多個值認為是一個元組,
當回傳值有多個變數接收,那么回傳值的個數應該和接收變數的個數完全一致,
函式呼叫
s='hello world!'
length=strlen(s) #呼叫上面寫的strlen函式
print(length) #列印輸出12
函式引數
函式的引數安裝型別可以分為形參和實參(可變型別和不可變型別),
不可變型別(如 整數、字串、元組)傳遞的只是它的值,沒有影響物件本身,如果在函式內部修改它的值,則是相當于新生成一個它,
可變型別則類似C++的參考傳遞,如串列,字典,則是將引數真正的傳過去,修改后外部的引數變數也會受影響,
def invariableFun(i):
i=100 #引數為不可變型別,函式內部改變不會影響外部引數
a=1
print(a)
invariableFun(a)
print(a)
#輸出結果如下
1
1
def variantFun(list):
list.append('python') #引數為可變型別,函式內部改變會影響外部引數
mylist=['Lily', 'James']
print(mylist)
variantFun(mylist)
print(mylist)
#輸出結果如下
['Lily', 'James']
['Lily', 'James', 'python']
引數還可以分為必需引數,關鍵字引數, 默認引數和不定長引數,
1)必需引數
必要引數,即函式呼叫時必須要傳的引數,
2)默認引數
必選引數在前,默認引數在后,否則python解釋器會報錯,
默認引數一定要指向不變物件!指向不變物件!指向不變物件!
def student(name, age=18):
print(name, age)
student("Lily")
student("Lily", 20)
#輸出結果如下:
Lily 18
Lily 20
3)關鍵字引數
其實默認引數中已經出現了關鍵字引數!關鍵字引數就是在呼叫函式時,傳入實參時帶引數名,用這樣的方式傳入的實參叫做關鍵字引數,
使用關鍵字引數允許函式呼叫時引數的順序與宣告時不一致,因為 Python 解釋器能夠用引數名匹配引數值,
def student(name, age=18):
print(name, age)
student(age=22, name='Lily')
#輸出結果如下:
Lily 22
4)不定長引數
不定長引數又分為兩種:
a.允許在呼叫時傳入多個“非關鍵字”引數,python會將這些多出來的引數放入一個元組中,
def tupleVarArgs(arg1, arg2='default arg2', *other):
print('arg1: ', arg1)
print('arg2: ', arg2)
for x in other:
print('other arg: ', x)
#呼叫輸出結果如下:
tupleVarArgs('Lily')
arg1: Lily
arg2: default arg2
tupleVarArgs('Lily', 'Sandy')
arg1: Lily
arg2: Sandy
tupleVarArgs('Lily', 'Sandy', 'James', 'Curry')
arg1: Lily
arg2: Sandy
other arg: James
other arg: Curry
b.允許在呼叫時傳入多個“關鍵字”引數,python會將這些多出來的<引數名, 引數值>放入一個字典中,需要注意的是,關鍵字變數引數應該為函式定義的最后一個引數,帶**,
def dictVarArgs(arg1, arg2='default arg2', **otherArgs):
print('arg1: ', arg1)
print('arg2: ', arg2)
for x in otherArgs.keys():
print('other arg: <%s : %s> '% (x, str(otherArgs[x])))
#呼叫輸出結果如下:
dictVarArgs('Lily')
arg1: Lily
arg2: default arg2
dictVarArgs('Lily', 'Sandy')
arg1: Lily
arg2: Sandy
dictVarArgs('Lily', 'Sandy', name1='James', name2='Curry')
arg1: Lily
arg2: Sandy
other arg: <name1 : James>
other arg: <name2 : Curry>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/222359.html
標籤:其他
