Python基礎入門5 函式

2021-08-07 08:05:35 字數 3274 閱讀 2210

python 函式

函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的**段。

函式能提高應用的模組性,和**的重複利用率。你已經知道python提供了許多內建函式,比如print()。但你也可以自己建立函式,這被叫做使用者自定義函式。

定義乙個函式

def

functionname

( 引數 ):

函式體return [expression]

函式呼叫

定義乙個函式只給了函式乙個名稱,指定了函式裡包含的引數,和**塊結構。

這個函式的基本結構完成以後,你可以通過另乙個函式呼叫執行,也可以直接從python提示符執行

# 定義函式

defprintme

( str ):

print str; #輸出傳入的str

return;

# 呼叫函式

printme("我要呼叫使用者自定義函式!");

可更改(mutable)與不可更改(immutable)物件

在 python 中,strings, tuples, 和 numbers 是不可更改的物件,而 list,dict 等則是可以修改的物件。

不可變型別:變數賦值 a=5 後再賦值 a=10,這裡實際是新生成乙個 int 值物件 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,相當於新生成了a。

可變型別:變數賦值 la=[1,2,3,4] 後再賦值 la[2]=5 則是將 list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。

python 函式的引數傳遞:

不可變型別:類似 c++ 的值傳遞,如 整數、字串、元組。如fun(a),傳遞的只是a的值,沒有影響a物件本身。比如在 fun(a)內部修改 a 的值,只是修改另乙個複製的物件,不會影響 a 本身。

可變型別:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改後fun外部的la也會受影響

python 中一切都是物件,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變物件和傳可變物件。

python 傳不可變物件例項

def

changeint

( a ):

a = 10

b = 2

changeint(b)

print b # 結果是 2

例項中有 int 物件 2,指向它的變數是 b,在傳遞給 changeint 函式時,按傳值的方式複製了變數 b,a 和 b 都指向了同乙個 int 物件,在 a=10 時,則新生成乙個 int 值物件 10,並讓 a 指向它。

傳可變物件例項

# 可寫函式說明

defchangeme

( mylist ):

"修改傳入的列表"

print

"函式內取值: ", mylist

return

# 呼叫changeme函式

mylist = [10,20,30];

changeme( mylist );

print

"函式外取值: ", mylist

函式內取值: [10, 20, 30, [1, 2, 3, 4]]

函式外取值: [10, 20, 30, [1, 2, 3, 4]]

傳參:

除了正常的單參和多參傳輸外,py有一種特殊的傳參方式

不定長引數

def

functionname

([formal_args,] *var_args_tuple ):

"函式_文件字串"

function_suite

return [expression]

加了星號(*)的變數名會存放所有未命名的變數引數。選擇不多傳引數也可。

# 可寫函式說明

defprintinfo

( arg1, *vartuple ):

"列印任何傳入的引數"

print

"輸出: "

print arg1

for var in vartuple:

print var

return;

# 呼叫printinfo 函式

printinfo( 10 );

printinfo( 70, 60, 50 );

輸出:

10 輸出:

70 60

50匿名函式

python 使用 lambda 來建立匿名函式。

lambda只是乙個表示式,函式體比def簡單很多。

lambda的主體是乙個表示式,而不是乙個**塊。僅僅能在lambda表示式中封裝有限的邏輯進去。

lambda函式擁有自己的命名空間,且不能訪問自有引數列表之外或全域性命名空間裡的引數。

雖然lambda函式看起來只能寫一行,卻不等同於c或c++的內聯函式,後者的目的是呼叫小函式時不占用棧記憶體從而增加執行效率。

lambda

[arg1 [,arg2,.....argn]]:expression

例子:

# 可寫函式說明

sum = lambda arg1, arg2: arg1 + arg2;

# 呼叫sum函式

print

"相加後的值為 : ", sum( 10, 20 )

print

"相加後的值為 : ", sum( 20, 20 )

補充:

全域性變數想作用於函式內,需加 global

globvar = 0

defset_globvar_to_one

():global globvar # 使用 global 宣告全域性變數

globvar = 1

defprint_globvar

(): print(globvar) # 沒有使用 global

set_globvar_to_one()

print globvar # 輸出 1

print_globvar() # 輸出 1,函式內的 globvar 已經是全域性變數

Python入門基礎知識 5 數學函式

importmath 浮點數相關函式 importcmath 複數運算相關函式 1.math.pi 圓周率 2.math.e e 自然常數 absolute 絕對值 返回x的絕對值。ceil 進一法取整 返回比x大的最小整數。返回比x小的最大整數。返回e的x次方。1.x為對數,base為底數,不指明...

python基礎5 函式

函式 函式的作用 函式 是用於對重複 塊的封裝,解決 重複的問題 語法 def 函式名 形式引數 函式體 重複 塊 return 資料 1.定義函式 不會執行函式體的 2.必須呼叫函式的時候才會執行封裝的 塊 呼叫語法 函式名 3 函式必須先定義 再呼叫 例 封裝乙個函式,實現99乘法表 defcf...

python入門學習 函式基礎

認識函式 在乙個完成的專案中,某些功能會反覆的使用,那麼會講功能封裝成函式,當我們要使用功能的時候直接呼叫函式即可 本質 函式對功能的封裝 有點 1 簡化 的結構名,增加 的復用度 重複使用的程度 2 如果想修改某個功能或者某個bug,只需要修改物件的函式即可 函式定義 格式def 函式名 引數列表...