函數
定義:函數對程式邏輯進行結構化或過程化的一種程式設計方式,寫函數的目的是為了代碼的重用。
1.自定義函數:自定義函數通過def關鍵字定義。
def函數名(參數):
語句塊(函數體)
2.形參和實參
<1>形參:定義函數時,在函數名後面括号内的參數叫形參。
<2>實參:調用函數時可以通過參數給函數傳值,通過參數指派的過程叫傳參。而調用函數時這個參數就叫實參。
def fun99(x): #設定一個形參
for i in range(1,x+1): #實參的值可以傳遞到函數體内
for j in range(1,i+1):
print(j,'*',i,'=',i*j,'\t',end='')
print('\n')
print("It''s Main")
fun99(3) #數字3即是實參的值
fun99() #調用函數未傳參
3.傳回值
傳回值是函數的一部分,即使不設定,以然也會有傳回值。(注:由于這個沒有設定傳回值,是以輸出結果看到的是None。)
x=fun99(3) #等号後調用了函數,此時就已經想螢幕列印結果了,函數的傳回值指派給了x
print(x) #列印函數的傳回值
變量作用域
1.局部變量
局部變量是在函數内定義的變量,這種變量隻能在函數内部使用。局部變量的作用域隻在它被定義的巨塊中。
如下例:
x = 10
def func(i):
print("x=",i)
x = 100
y = 50
print("local x =",x)
print("local y =",y)
func(x)
print("x=",x)
print("y=",y)
2.全局變量
定義:如果想要函數内的變量作用于函數之外,這種變量的作用域就必須是全局的。能夠作用于函數内外的變量,叫作全局變量。(函數以外定義的變量。)
全局變量可以通過global語句定義,改造一下上面的程式,把x和y定義成全局變量:
x=10
def func(i):
global x,y
print("x = ",i)
x = 100
y = 50
print("local x =",x)
print("local y =",y)
func(x)
print("x = ",x)
print("y = ",y)
運作結果如下:
x = 10
local x = 100
local y = 50
x = 100
y = 50
參數的類型
1.位置參數
定義:實參的指派時按照形參定義的順序傳遞。
def func(x,y,z):
print(x,y,z)
func(1,2,3) #TypeError 在函數執行時,定義的形參沒有實參,就會報錯
2.命名傳參
定義:執行函數時,形參名=值(實參)方式指派。
注:<1>使用命名可以不按照形參定義的順序指派。
<2>檢視函數幫助資訊help(函數名):
print(help(func1))
3.預設值參數
定義:定義函數時,給形參設定預設值。
def func2(x=1,y=2,z=3):
print(x,y,z)
func2(y=2222) #使用預設值參數時,可以不用給擁有預設值的形參指派
4.可變長度參數:在參數名前加 *
形參會将接受到的所有參數放置在一個元組中。
求最大值:
def func3(*args):
m = args[0]
for i in args[1:]:
if m < i:
m = i
return m
print(func3(1,2,23,3,3,4))
5.可變長命名參數 : **形參
使用字典類型接收所有的參數{"形參":實參}
def func4(**kwargs):
print(kwargs)
func4(name="root",password="123456")
input()