python常見面試題

2021-08-21 14:21:00 字數 564 閱讀 5435

看兩個例子:

python

a = 1

def fun(a):

a = 2

fun(a)

print a  # 1

python

a =

def fun(a):

fun(a)

print a  # [1]

所有的變數都可以理解是記憶體中乙個物件的「引用」,或者,也可以看似c中void*的感覺。

這裡記住的是型別是屬於物件的,而不是變數。而物件有兩種,「可更改」(mutable)與「不可更改」(immutable)物件。在python中,strings, tuples, 和numbers是不可更改的物件,而list,dict等則是可以修改的物件。(這就是這個問題的重點)

當乙個引用傳遞給函式的時候,函式自動複製乙份引用,這個函式裡的引用和外邊的引用沒有半毛關係了.所以第乙個例子裡函式把引用指向了乙個不可變物件,當函式返回的時候,外面的引用沒半毛感覺.而第二個例子就不一樣了,函式內的引用指向的是可變物件,對它的操作就和定位了指標位址一樣,在記憶體裡進行修改.

如果還不明白的話,這裡有更好的解釋:

Python常見面試題

1 python生成隨機數 import random random.random 隨機生成0 1之間的數字 random.uniform 1,10 隨機生成1 10之間的數字 包括小數整數 random.randint 1,10 生成1 10之間的整數 random.randrange 1,10,...

python常見面試題

有如下的一段 class a object def show self print base show class b a def show self print derived show obj b obj.show 如何呼叫類a的show方法了。方法如下 obj.class a obj.show...

Python常見面試題

常見面試題 詳細參見 新增鏈結描述 當我們不知道向函式傳遞多少引數時,比如我們向傳遞乙個列表或元組,我們就使用 args。在我們不知道該傳遞多少關鍵字引數時,使用kwargs來收集關鍵字引數。一 args的使用方法 args 用來將引數打包成tuple 給函式體呼叫 二 kwargs的使用方法 kw...