python基礎 函式

2021-08-20 16:27:20 字數 3921 閱讀 5094

在程式設計過程中可以定義自己想要實現的功能的函式,語法如下:

def 函式名(引數列表):    #函式名可以隨意編寫,但最好不要與內建函式重複,不然內建函式將被替換成你所定義的函式

函式體

例:

def f(a,b,c,d):

return a,b,c,d

c=f(1,2,3,4)

print(c)

c,d,x,y=f(1,2,4,3)

print(c,d,x,y)

輸出結果:

(1, 2, 3, 4)

1 2 4 3

例:

def test(x):                    #引數列表裡的引數為形參

x=10

print('-----',x)

x=5                             #這裡的x為實參,雖然與形參一樣,但是卻是不同的兩個值

test(x)

print('--+--',x)

輸出結果:

----- 10

--+-- 5

可變引數和不可變引數:

在之前的學習中,我們知道不可變型別為:字串、元組和數值;可變型別為:列表、字典、集合。在函式中對不可變引數重新賦值後,函式的輸出結果則會輸出新賦值,而對可變引數中的某個元素重新賦值後,可變引數本身沒有動,只是將內部元素進行了修改。

例:

def a(x):

x=10

print(x)

s=1a(s)

def b(y):

y[2]=14

print(y)

k=[1,2,3,4,5,6]

b(k)

輸出結果:

10

[1, 2, 14, 4, 5, 6]

函式的引數主要分為五個型別:必需引數、預設引數、可變引數、關鍵字引數和命名關鍵字引數,這5種引數都可以組合使用,除了可變引數無法和命名關鍵字引數混合。但是請注意,引數定義的順序必須是:必需引數、預設引數、可變引數/命名關鍵字引數和關鍵字引數。

例:

def f2(a, b, c=0, *e, x, d,**k):

print('a =', a, 'b =', b, 'c =', c, 'e=', e,'x=',x,'d=',d,'k =', k)

args = (1, 2, 3, 4)

kw =

f2(*args,**kw)

輸出結果:

a = 1 b = 2 c = 3 e= (4,) x= # d= 99 k = {}
必需引數須以正確的順序傳入函式。呼叫時的數量必須和宣告時的一樣。

例:

#可寫函式說明

def printme( str ):

print (str)

return

#呼叫printme函式

printme( str = "hello")

hello
呼叫函式時,如果沒有傳遞引數,則會使用預設引數。以下例項中如果沒有傳入 age 引數,則使用預設值:

例:

#可寫函式說明

def printinfo( name, age = 35 ):

print ("名字: ", name)

print ("年齡: ", age)

return

#呼叫printinfo函式

printinfo( age=30, name="leo" )

print ("------------------------")

printinfo( name="leo" )

輸出結果:

名字:  leo

年齡: 30

------------------------

名字: leo

年齡: 35

關鍵字引數和函式呼叫關係緊密,函式呼叫使用關鍵字引數來確定傳入的引數值。

使用關鍵字引數允許函式呼叫時引數的順序與宣告時不一致,因為 python 直譯器能夠用引數名匹配引數值。

例:

#可寫函式說明

def printinfo( name, age ):

print ("名字: ", name)

print ("年齡: ", age)

return

#呼叫printinfo函式

printinfo( age=30, name="leo" )

輸出結果:

名字:  leo

年齡: 30

你可能需要乙個函式能處理比當初宣告時更多的引數。這些引數叫做不定長引數,和上述引數不同,宣告時不會命名。基本語法如下:

def a(*args):    #主要區別為加了『*』符號

函式體return

例:

# 可寫函式說明

def printinfo( arg, *args ):

print ("輸出: ")

print (arg)

for i in args:

print (i)

return

# 呼叫printinfo 函式

printinfo( 10 )

printinfo( 70, 60, 50 )

輸出結果:

輸出:

10輸出:

7060

50

全域性變數

在乙個模組中最高端別的變數有全域性作用域,除非被刪除,否則能存活到程式執行結束。所有函式都能訪問全域性變數。

區域性變數

定義在函式內的變數有區域性作用域。

依賴於定義變數的函式現階段是否處於活動狀態。

呼叫函式時,區域性變數產生,暫時存在。

一旦函式執行完,區域性變數將會被釋放。

注:

同乙個函式中,不允許有同名區域性變數

不同函式中,可以有同名區域性變數

同乙個程式中,全域性變數和區域性變數同名時,區域性變數具有更高的優先順序

例:

total = 0 # 這是乙個全域性變數

# 可寫函式說明

def sum( arg1, arg2 ):

#返回2個引數的和."

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

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

return total

#呼叫sum函式

sum( 10, 20 )

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

輸出結果:

函式內是區域性變數 :  30

函式外是全域性變數 : 0

但是有時候我們想要函式中修改外部作用域的變數時,就需要global方法來實現了。

例:

num = 1

def fun1():

global num # 需要使用 global 關鍵字宣告

print(num)

num = 2

print(num)

fun1()

輸出結果:

1

2

Python基礎 函式

函式設計原則 函式有多種方法獲得輸入產生輸出,一般使用引數作為輸入,return語句配合可變引數的改變作為輸出。函式輸入 函式輸出 def fun args returndef語句 def建立了乙個函式物件並將其賦值給乙個變數。def語句是實時執行的,在模組匯入時執行或者在互動模式下輸入時執行。始終...

python基礎 函式

def funcname params return value 如果沒有return 最後會返回none,如果只寫return 會返回none 返回值個數為乙個,但是可以返回tuple,表面上返回多個值 def f1 return x,y x,y f1 def nop passdef functe...

Python 函式基礎

定義 函式是指將一組語句的集合通過乙個名字 函式名 封裝起來,要想執行這個函式,只需呼叫其函式名即可 為什麼使用函式 減少重複 使程式變的可擴充套件使程式變得易維護 1 定義乙個函式 2def func 使用def關鍵字定義函式 接函式名,括號內可以傳遞引數 3print hello world 函...