這次帶給大家Python變數與賦值的圖文詳解,使用Python變數與賦值的注意事項有哪些,以下就是實戰案例,一起來看一下。
Python是一門獨特的語言,與C語言有很大區別,初學Python很多萌新表示對變數與賦值不理解,學過C的都知道,給變數賦值時,需要先指定資料型別,同時會開啟一塊記憶體區域,用於儲存值,例如:
int a = 1;
a 是記憶體空間中的一小塊區域,就像是一個大房間裡面的一個小盒子,賦值就是把整數1裝載到盒子裡面。
現在給變數a重新賦值
a = 2;
#盒子仍然是那個盒子,也就是說記憶體位址沒有改變,只是該段記憶體中的值變了,變成了2。
再來看:
int b = a;
當變數a賦值給另外一個變數b時,相當於把值拷貝了一份傳遞給變數b, b是新開闢的一段記憶體區域
而在Python中,「變數」的嚴格叫法是“名字(name)”,也可以理解為標籤,就像我們人的名字一樣,名字就是掛在人身上的一個標籤。
>>> 10-a Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined</module></stdin>
例如上面這段錯誤報的是name 'a' 沒有定義,而沒有說成 variable。
在Python中,給變數賦值就是相當於給物件貼標籤,就像我們給人取名字一樣,變數本身是沒有任何意義的,它沒有類型訊息,真正的訊息都在物件身上。
例如:
a = 1
Python內部首先會分配一段記憶體空間用於建立整數物件1,然後給這個1貼上名為a的標籤。
然後執行
a=2
Python接著會在另一塊記憶體區域創建整數物件2,然後把標籤a從1身上撕下來貼在2身上,此時,我們沒辦法再通過a來得到1這個值了。
現在把名字a賦值給另外一個名字b
b = a
相當於在剛才的2身上又貼了一個新的標籤b,注意,這裡和C語言是完全不一樣的,定義b的時候不需要分配記憶體空間,這樣我們既可以透過a來存取2也可以透過b來存取2,存取的都是同一個對象,就好比我們為寶寶取名時既有小名也有大名,其實叫的都是同一個人。
雖然我們通常在Python中還是用"變數"的叫法(因為在程式語言中這是一種通用叫法),但我們需要理解Python中的變數不同於其他語言,變數只是一個名字。
理解了Python中的變數與賦值後,再來看函數的參數傳遞,如下:
>>> def fun_a(a): ... a = a+4 ... >>> g = 0 >>> fun_a(g) >>> g 0
全域變數g傳遞給函數fun_a時,相當於函數中的參數a也將作為標籤貼在0上,隨後a被重新賦值了(a=a 4),相當於從0撕下標籤a貼到4身上,然後g依然還是0上面的標籤。
再來看這個函數,傳遞的是一個列表物件
>>> def fun_b(names): ... names[0] = ['x', 'y'] ... >>> n_list = ['a','b','c'] >>> fun_b(n_list) >>> >>> n_list [['x','y'], 'b', 'c']
与前面的步骤还是一样的,names 和 n_list 都是['a','b','c']上的一个标签,只是列表中的第0个元素被重新赋值了,但是names和 n_list 依然都贴在这个列表对象身上,虽然 n_list的值更新了,但对象依然是原来那个对象。就好比张三和小张都是同一个人,现在给小张换件衣服时,其实就是给张三换件衣服,人还是那个人,只是它身上的东西发生了变化。
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上是Python變數與賦值的圖文詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!