python函數

#函數基本應用,函數能夠看作是語句的集合,經過函數調用來執行其包含的語句。函數能夠返回一個計算結果,根據每次函數調用的參數
#能夠返回不一樣的計算結果,根據每次調用的參數,能夠返回不一樣的計算結果。
#python利用函數提升代碼的重用率,減小了代碼冗餘。
#定義函數
#python使用def語句定義函數,基本格式以下:python

def 函數名(參數表):

函數語句

return 返回值

#其中,參數和返回值都不是必須有的,python容許函數能夠沒有參數,也沒有返回值。例如:
def hello():
print("python 你好")
#調用函數;
hello()c++

#hello()函數沒有參數,也沒有返回值,經過print()打印一個字符串。下面的例子定義兩個參數,並用return語句返回兩個參數的和;
#定義函數
def add(a,b):
return a+b
#調用函數,並接受返回值;
res=add(2,4)
#打印輸出的結果 ;
print(res)ide

#函數調用
#在python中,全部的語句都是實時執行的,不像cc++存在編譯過程。def也是一條可執行的語句,定義一個函數。因此函數的調用
#必須在函數定義以後。
#在python中,函數名也是一個變量,它引用return語句返回的值,沒有返回值,函數值爲None。
#定義函數
def mul(a,b):
return a*b
#直接訪問函數名,可返回函數名的內存地址
print(add)
#以下是調用函數,並接受返回值,以及將函數名賦值給變量,而後使用變量進行調用。
def div(a,b):
return a/b
#調用函數,並返回函數值;
res=div(10,2)
#打印結果;
print("10/2=",res)
#將函數名賦值給變量
x=div
#經過變量名來調用函數
res=x(1,8)
#打印結果;
print(res)
#函數參數,在定義函數的時候,參數中的各個參數成爲形式參數,簡稱形參。調用函數時,參數表中提供的參數稱爲實際參數。
#在python中,變量保存的是對象的引用,相似C C++中的指針。實際傳遞給形參的就是將對象的引用賦值給形參。
#多態是,面向對象的一個特色,指同一個行爲針對不一樣對象會獲得不一樣的結果。python中的變量無類型屬性,變量可引用各類不一樣
#類型的對象。同一個函數,傳遞的實際參數不一樣時,可得到不一樣的結果,提現了多態。
#支持「+」運算的對象都可做爲參數
def add(a,b):
return a+b
res=add(1,2.5)
print("數值相加:",res)函數

res=add("abc","def")
print("字符串相加:",res)指針

res=add((1,2),(3,8))
print("元祖合併,",res)對象

res=add([1,2],[3,4])
print("列表合併:",res)
#這裏的+屬於直接使用的方式,實現了多態。
#參數賦值傳遞,一般函數調用時按參數的前後順序,將實際傳遞形參傳遞給形參。例如調用add(1,2.5)時,1傳遞給a
#2.5傳遞給b。python容許以形參賦值的方式,指定將實參傳遞給形參。
#定義函數
def add(a,b):
return a+b
#經過賦值來傳遞參數
res=add(a='ab',b='cd')
print(res)
#經過賦值來傳遞參數;
res=add(b='ab',a='cd')
print(res)
#能夠看出來,在採用參數賦值傳遞時,由於指明瞭接受實參的形參名稱,因此參數的前後順序已經可有可無。參數賦值傳遞方式
#成了關鍵字傳遞。
#3.參數傳遞與共享引用
#定義函數
def f(x):
x=100
#定義變量,並將變量做爲參數傳入函數;
a=10
f(a)內存

#執行後顯示變量的值;
print(a)
#從結果能夠看出,實際參數的值已經覆蓋了原來的值100.
#4.當心使用可變參數,當參數是可變參對象時,如列表、字典等,若在函數中修改形參,由於是共享引用
#經過實參也得到修改後的對象。
def f(a):
#修改列表第一個值
a[1]='abc'
#定義列表對象;
x=[1,2]
#調用函數,傳遞列表對象的引用
f(x)
#變量x引用的列表對象在函數中被修改。
print(x)
#可見,可變參數可在函數中被修改,若是不但願在函數中的修改影響函數外的變量,應該注意避免可變參數被修改。
#若是要避免列表在函數中被修改,可以使用列表的拷貝做爲實參。例如:
def f(a):
#修改列表中的第一個值;
a[0]='abc'
x=[1,2]
#傳遞列表的拷貝字符串

f(x[:])

print(x)
#若是不但願在函數中的修改影響函數外的變量,應避免可變參數被修改。若是要避免列表在函數中被修改,可以使用列表的拷貝
#做爲實際參數。
def f(a):
#拷貝列表;
a=a[:]
#修改列表的拷貝;
a[0]='abc'
x=[15,2]
#調用函數
f(x)
#結果顯示原列表不變
print(x)
#5.有默認值的參數;
#在定義函數時,能夠爲參數設置一個默認值,調用函數時,若是未提供實際參數,則形參取默認值。例如:
#定義函數;
def add(a=9,b=-100):
return a+b
#傳遞指定參數;
res=add(1,2)
print(res)
#形參b取默認值;
res=add(1)
print(res)it

res=add()
print(res)編譯

相關文章
相關標籤/搜索