python的復賦值邏輯

2021-08-26 23:50:24 字數 935 閱讀 8991

在c語言中有下面一段**

a=1

;b=a

;b=b-1

;printf("%,d,%d",a,b)

輸出為1,0,其中a,b指向了不同的儲存單元,也就是a,b代表了不同的記憶體位址。

在python中

a=1

;b=a

;b=b-1

;printf("%,d,%d",a,b)

輸出為0,0其中a,b指向了相同的記憶體位址,資料只有乙個沒變。

如果說 c 程式是通過操縱記憶體位址而間接運算元據(每個變數固定對應乙個記憶體位址,所以說操縱變數就是操縱記憶體位址),資料處於被動地位,那麼 python 則是直接操縱資料,資料處於主動地位,變數只是作為一種引用關係而存在,而不再擁有儲存功能。

簡單點來數,c語言的物件是變數,也就會說變數名。python的物件是資料,不再是變數名。

所以進一步有兩個問題

1. 為什麼 python 中沒有自增(++)、自減(–)運算子?

自增或自減運算子,在 c 語言中很常用,簡潔實用。但在 python 中卻一定不會有。上節說到,數字是天然的不可變物件,所謂自增就是自身增加,物件無法自我操作,他只會從乙個物件指向下乙個物件。可以這樣寫 a += 1。

3. 既然 python 更改的只是引用關係,那麼如何複製乙個列表?

a = [1, 2, 3]

b = a

# 這樣做不能複製乙個列表,a 和 b 指向的都是列表 [1, 2, 3]

# 答案:

## 1. 使用 list 的 copy 方法

b = a.copy()

## 2. 使用 slice 操作

b = a[:] # slice 操作返回乙個新的物件

Python中斐波那契數列的賦值邏輯

斐波那契數列又稱費氏數列,是數學家leonardoda fibonacci發現的。指的是0 1 1 2 3 5 8 13 21 34 這樣的數列。即從0和1開始,第n項等於第n 1項與n 2項之和。需要注意的是0是第0項,而不是第一項。斐波那契數列的規律其實就是將前兩項的值相加並得到當前項的值,用f...

python檔案複製 python檔案的複製

python複製文字的兩種方法 usr bin env python coding utf 8 import os 方法一,讀寫檔案進行複製 1 建立檔案test1.txt f1 open test1.txt w f1.writelines hello n world n welcome to py...

運載符過載三(賦值 ,邏輯)

賦值過載運算子 類名 operator const 類名 變數名 乙個空類中至少有四個函式 無參建構函式 拷貝建構函式 析構函式 賦值運算子過載函式 include include using namespace std class student void show 賦值運算子 類名 operat...