天天看點

Python函數基本知識

文章目錄

    • 函數
    • 全局變量和局部變量
    • 淺拷貝和深拷貝

函數

1、一個程式由一個個任務組成;函數就是代表一個任務或者一個功能。

2、函數是代碼複用的通用機制。

函數的形式如下:

def 函數名 ([參數清單]) :

‘’‘文檔字元串’’’

函數體/若幹語句

參數清單 :

(1) 圓括号内是形式參數清單,有多個參數則使用逗号隔開

(2) 形式參數不需要聲明類型,也不需要指定函數傳回值類型 (3) 無參數,也必須保留白的圓括号

(4) 實參清單必須與形參清單一一對應

return傳回值要點:

1、 如果函數體中包含return 語句,則結束函數執行并傳回值;

2、如果函數體中不包含return語句,則傳回 None 值。 3. 要傳回多個傳回值,使用清單、元組、字典、集合将多個值“存起來”即可

調用函數時,傳遞的參數稱為“實際參數”,簡稱“實參”。形式參數是在定義函數時使用的。 形式參數的命名隻要符合“标 識符”命名規則即可。

def printMax(a,b):

'''實作兩個數的比較,并傳回較大的值'''
if a>b:
    print(a,'較大值')
else:
    print(b,'較大值')
           

printMax(10,20)

printMax(30,5)

傳回值:

Python函數基本知識

函數是對象

Python函數基本知識

上面代碼執行 def 時,系統中會建立函數對象,并通過print_star 這個變量進行引用:

Python函數基本知識

執行“c=print_star”後,顯然将 print_star 變量的值賦給了變量c,記憶體圖變成了:

Python函數基本知識

全局變量和局部變量

變量起作用的範圍稱為變量的作用域,變量分為:全 局變量、局部變量。

全局變量:

1、在函數和類定義之外聲明的變量。作用域為定義的子產品,從定義位置開始直到子產品 結束。

2、全局變量降低了函數的通用性和可讀性。應盡量避免全局變量的使用。

3、全局變量一般做常量使用。

4、函數内要改變全局變量的值,使用global聲明一下

局部變量:

1、在函數體中(包含形式參數)聲明的變量。

2、 局部變量的引用比全局變量快,優先考慮使用。

3、如果局部變量和全局變量同名,則在函數内隐藏全局變量,隻使用同名的局部變量

Python函數基本知識
Python函數基本知識
Python函數基本知識

Python中參數的傳遞都是“引用傳遞”,不 是“值傳遞”。具體操作時分為兩類:

1、對“可變對象”進行“寫操作”,直接作用于原對象本身。

2、 對“不可變對象”進行“寫操作”,會産生一個新的“對象空間”,并用新的值填 充這塊空間。(起到其他語言的“值傳遞”效果,但不是“值傳遞”)

可變對象有: 字典、清單、集合、自定義的對象等

不可變對象有: 數字、字元串、元組、function等

Python函數基本知識
Python函數基本知識

淺拷貝和深拷貝

淺拷貝copy(淺拷貝):不拷貝子對象的内容,隻是拷貝子對象的引用。

深拷貝deepcopy(深拷貝):會連子對象的記憶體也全部拷貝一份,對子對象的修改不會影響源對象

import copy

def testCopy():

’ ’ ’ 測 試 淺 拷 貝 ’ ’ ’

a = [10, 20, [5, 6]]

b = copy.copy(a)

print(“a”, a)

print(“b”, b)

b.append(30)

b[2].append(7)

print(“淺拷貝…”)

print(“a”, a)

print(“b”, b)

def testDeepCopy():

’ ’ ’ 測 試 深 拷 貝 ’ ’ ’

a = [10, 20, [5, 6]]

b = copy.deepcopy(a)

print(“a”, a)

print(“b”, b)

b.append(30)

b[2].append(7)

print(“深拷貝…”)

print(“a”, a)

print(“b”, b)

testCopy()

print("*************")

testDeepCopy()

Python函數基本知識