函數
函數是對程序邏輯進行結構化或過程化的一種編程方法,就是將完成一定功能的代碼段組合在一起。
函數定義
def functionName(par1,par2,...):
語句塊
...
return expression
函數調用
函數調用注意傳入參數的正確性。
functionName(par1,par2,...)
函數參數
除了函數的必選參數外,還有默認參數、可選參數和關鍵字參數。
- 默認參數
默認參數的位置在必選參數的後面;默認參數一定是不可變對象。
def power(x,n=2):
s=1
while n>0:
n=n-1
s=s*x
return s
print(power(3)) #9
print(power(3,3)) #27
- 可變參數
可變參數的含義就是傳入的參數個數是可變的,可以是任意個,例如1個、2個或3個等。
def calc(*num):
s=0
for n in num:
s=s+n
return s
print(calc(1,2,3,4)) #10
print(calc(3,4)) #7
- 關鍵字參數
關鍵字參數傳入 0 個或任意個含參數名的參數,這些關鍵字參數在函數內部自動組裝爲一個 dict(字典)。
def student(name, age, **other):
print('name:', name, 'age:', age, 'other:', other)
student('XiaoMing', 20) #name: XiaoMing age: 20 other: {}
student('XiaoMing', 20, sex='M') # name: XiaoMing age: 20 other: {'sex': 'M'}
student('XiaoMing', 20, sex='M', num='120153703') # name: XiaoMing age: 20 other: {'sex': 'M', 'num': '120153703'}
- 參數組合
參數可以組合使用,參數定義的順序必須是:必選參數、默認參數、可變參數和關鍵字參數。
函數的嵌套
在一個函數裏邊,再定義一個函數。定義在其他函數內的函數叫作內部函數,內部函數所在的函數叫作外部函數。
def A(a):
print('this is a')
def B(b):
print('this is b')
print('a+b=',a+b)
B(3)
print('over!')
A(2)
#this is a
#this is b
#a+b= 5
#over!
內部函數可以訪問外部函數傳入的參數。
函數的遞歸調用
遞歸分爲兩類:直接遞歸和間接遞歸。
直接遞歸就是在函數中直接調用函數自身;間接遞歸就是間接地調用一個函數,如第一個函數調用另一個函數,而該函數又調用了第一個函數。
def fac(n):
if n<=1:
return 1
else:
return n*fac(n-1)
print(fac(4)) #24
變量作用域
在函數中定義的變量稱爲局部變量。局部變量只在定義它的函數內部有效。
在函數體之外定義的變量稱爲全局變量,全局變量在定義之後的代碼中都有效。
模塊
一個.py文件就是一個模塊。使用模塊最大的好處就是大大提高了代碼的可維護性。
導入和創建模塊
- 導入模塊
#導入整個模塊
import module1[, module2[,… moduleN]
#導入模塊中某一函數
from modname import name1[, name2[,… nameN]]
- 創建模塊
創建一個test.py文件,在文件中定義函數:
def add(a,b):
return a+b
在其他文件中,可以導入並使用該函數:
import test
print(test.add(2,4)) #6
---------------
from test import add
print(add(2,4)) #6