python函式概述 Python中函式概述

2021-10-22 12:29:45 字數 4083 閱讀 9276

python中的函式

認識函式:在乙個完整的專案中,某些功能會反覆的使用。那麼我們會將功能封裝成函式,當我們要使用這個功能的時候

直接呼叫函式即可

**本質:**函式就是對功能的封裝

優點:1簡化**結構,增加了**的復用度(重複使用的程度)

2如果想修改某些功能或者除錯某些bug,還需要修改對應的函式即可

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

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

需求:編寫乙個函式,給函式乙個字串和乙個年齡,在函式內部列印出來

形參(形式引數):定義函式時小括號中的變數,本質是變數。

引數必須按順序傳遞,個數目前要對應

1.定義乙個函式

定義函式:

格式:def 函式名(引數列表):

語句return 表示式

def:函式**塊以def關鍵字開始

函式名:遵循識別符號規則

引數列表:(引數1,引數2,……,引數n):任何傳入函式的引數和變數必須放在括號之間,用逗號分隔,函式從函式的呼叫者**木偶取得資訊

冒號: 函式內容以冒號開始,並且縮排

語句:函式封裝的功能

return:一般用於結束函式,並返回資訊給函式的呼叫者

表示式:即為要返回給函式的呼叫者的資訊

注意:最後的renturn 表示式,可以不寫,相當於returnnone

2.值傳遞:

傳遞的是不可變型別

string,tuple,number是不可變得

引用傳遞:

傳遞的可變型別

list,dict,setdef funcl(num):#值傳遞

num = 10

temp = 20

funcl(temp)

print(temp)

#(輸出)20

def func2(list):#引用傳遞

list[0] = 100

li = [1,2,3,4,5]

func2(li)

print(li)

#(輸出)[100, 2, 3, 4, 5]

3.關鍵字

概念:允許函式呼叫時引數的順序與定義時不一致def myprint(str, age):

print(str, age)

myprint(age = 18,str = "sunck is a god man")

#(輸出)sunck is a god man 18

4.預設引數

預設函式:

概念:呼叫函式式,如果沒有引數,則使用預設引數def myprint(str, age):

print(str, age)

myprint() # 不寫報錯

#(輸出) typeerror: myprint() missing 2 required positional arguments: 'str' and 'age'

#設定預設引數值(要用預設引數,最好將預設引數放到最後)

def myprint(str = "sunck is a good man ", age = 18):

print(str, age)

myprint()

#(輸出)sunck is a good man 18

myprint("jierui dood" , 17) #輸出為 jierui dood 17

#(輸出)jierui dood 17

def myprint(str,age1 = 18):#要用預設引數,最好將預設引數放到最後

print(str, age1)

myprint("sad") #輸出 sad 18

5.不定長引數

概念:能處理比定義時更長的引數。

加*號的變數存放所有未命名的變數引數,如果在函式呼叫時沒有指定引數,他就是乙個空元組。def func(name):

print(name)

func("sunck","good","nice")# 這樣會報錯

#(輸出)typeerror: func() takes 1 positional argument but 3 were given

#加*號的變數存放所有未命名的變數引數,如果在函式呼叫時沒有指定引數,他就是乙個空元組

def func(name,*args):

print(name)

print(type(args)) # arrgs 為乙個元組

for x in args:

print(x)

func("sunck","good","nice") #這樣就能輸出

#(輸出)sunck

good

nice

**6.代表鍵值對應的引數字典。

和*代表的意義類似def func2(**kwargs):

print(kwargs)

print(type(kwargs)) #字典

func2(x=1,y=2,z=3)

#(輸出)

func2(1,2,3) #報錯

#(輸出)typeerror: func2() takes 0 positional arguments but 3 were given

7.任意引數def func3(*args,**kwargs):

pass#不寫,輸出空白語句

#(輸出)

8.多位數的和def mysum(*q):

sum = 0

for i in q:

sum += i

return sum

print(mysum(1,2,3,4,5))

#(輸出)15

9.匿名函式

概念:不使用def這樣的語句定義函式,使用lambda來建立匿名函式

特點:1 ,lambda只是乙個表示式,函式比def簡單

2, lambda的主題是表示式,而不是**塊,僅僅只能在lanbde表示式中封裝簡單的邏輯

3, lambde函式有自己的命名空間,且不同訪問電腦自有引數列表之外的或者全域性命名空間的引數

4, 雖然lambda是乙個表示式且看起來只能寫一行,與c和c++內聯函式不同

格式:lambda 引數1,引數2,……,引數n:espression

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

print(sum(1,2))

#(輸出)3

10.函式的返回值定義return

return語句[表示式]退出函式,選擇性地向呼叫方返回乙個表示式。不帶引數值的return語句返回none。之前的例子都沒有示範如何返回數值.def mysum(num1,num2):

#將結構返回給函式的呼叫者

return num1 + num2

#執行完return語句,該函式就結束,return後面的**不執行

prnit("****u*")

res = mysum(1,2)

print(res)

#(輸出)3 #並沒有執行print("****u*")語句

11.全域性變數和區域性變數

定義在函式內部的變數擁有乙個區域性作用域,定義在函式外的擁有全域性作用域。

區域性變數只能在其被宣告的函式內部訪問,而全域性變數可以在整個程式範圍內訪問。呼叫函式時,所有在函式內宣告的變數名稱都將被加入到作用域中。# 可寫函式說明

def sum(arg1, arg2):

# 返回2個引數的和."

total = arg1 + arg2; # total在這裡是區域性變數.

print("函式內是區域性變數 : ", total)

return total;

#(輸出)函式內是區域性變數 : 30

sum(10, 20) # 呼叫sum函式

print("函式外是全域性變數 : ", total)

#(輸出)函式外是全域性變數 : 0

python簡述定義函式的規則 python 函式

一.定義函式 函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的 段 函式能提高應用的模組性,和 的重複利用率 函式式 將某功能 封裝到函式中,日後便無需重複編寫,僅呼叫函式即可 物件導向 對函式進行分類和封裝,讓開發 更快更好更強.函式式程式設計最重要的是增強 的重用性和可讀性 1.定義函...

python函式概述 語法篇(2) 函式概述

函式 toc 基礎 python 也支援可變函式 a abs 變數a指向abs函式 a 1 所以也可以通過a呼叫abs函式 空函式 def nop pass pass可以用來作為佔位符,比如現在還沒想好怎麼寫函式的 就可以先放乙個pass age 20 if age 18 pass pass可以寫在...

pytho函式星號引數

神奇的星號 傳遞實參和定義形參 所謂實參就是呼叫函式時傳入的引數,形參則是定義函式是定義的引數 的時候,你還可以使用兩個特殊的語法 呼叫函式時使用 test args 的作用其實就是把序列 args 中的每個元素,當作位置引數傳進去。比如上面這個 如果 args 等於 1,2,3 那麼這個 就等價於...