函數從某種角度來講也是一種控制流程,這種控制流程的特點在於函數更加的靈活。
1 函數的定義
//函數定義語法
//def 函數名 (形參) : 函數體
def my_abs(x):
if x >= 0:
return x
else:
return -x
def myPrint():
print("今天你喫飯沒")
myPrint()
今天你喫飯沒
定義函數時,需要確定函數名和參數的個數。也可以不傳入參數。
函數體內部可以用return隨時返回結果,函數執行完畢也沒有return語句時,自動return None。
函數可以同時返回多個值,但其實就是將多個返回值打包成爲了一個tuple。
2 函數調用
函數調用有那種方式,直接調用和間接調用。
>>> n = abs //直接調用
>>> n(-2)
2
>>> abs(-2) //間接調用
2
3 函數參數
//命名關鍵字參數,作用限制關鍵字參數的名字。使用*進行分隔
def person(name, age, *, city, job):
print(name, age, city, job)
>>> person('Jack', 24, city='Beijing', job='Engineer')
Jack 24 Beijing Engineer
//如果函數定義中已經有了一個可變參數,後面跟着的命名關鍵字參數就不再需要一個特殊分隔符*了:
def person(name, age, *args, city, job):
print(name, age, args, city, job)
函數參數具有多種類型(從函數形參來看):位置參數、默認參數、可變參數、關鍵字參數、命名關鍵字參數、參數組合
//其中x便是位置參數,佔有函數實參的位置
def power(x):
return x * x
//默認參數
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
//n=2,便爲默認參數,默認參數可以簡化函數的調用
//.......python在進行定義時,默認參數的值已經被計算出來了,如果默認參數中的值被改變,下次調用時函數值已發生改變
//可變參數,傳入的參數是可變的
def fun(n, *args): #將多餘的數據打包成數組
print(n)
print(args) # 未拆包
print(*args) # 進行拆包
fun(1,2,3,4)
輸出:
1
(2, 3, 4)
2 3 4
//關鍵字參數 **kwargs,用於接收形參的命名參數
def fun(**kwargs): #打包
print(kwargs) #未拆包
print(*kwargs) # 進行拆包
fun(a=1, b=2)
輸出:
{'a': 1, 'b': 2}
a b