1.?
為什么是非法的?
a+1=a+1
在Python(以及大多數其他編程語言)中,表達式?
a+1=a+1
?是非法的,因為它試圖將一個值(a+1
?的結果)賦給一個表達式(a+1
?本身),而不是一個變量。賦值操作符?=
?在編程中用于將一個值存儲到一個變量中,但它左邊的必須是一個可賦值的對象(如變量名、屬性名、列表的元素等),而不是一個表達式。換句話說,你不能將?
=
?右邊的值賦給?=
?左邊的表達式,因為表達式的結果是一個值,而不是一個可以存儲新值的容器。如果你想表達一個恒等式(即一個總是為真的數學表達式),你應該使用?
==
?而不是?=
。但是,a+1 == a+1
?總是為?True
,因為對于任何?a
?的值,a+1
?都等于?a+1
。如果你想要對變量?
a
?進行某種操作,你應該這樣做:
python復制代碼
a = a + 1 # 或者簡寫為 a += 1
在這個例子中,
a
?的值被增加了1。
2.
為什么類型是dict而不是tuple
a=({'Name':'python'})
print(type(a))
?如果元組只有一個元素,要在最后加逗號
在Python中,當你寫下?
a = ({'Name':'python'})
?這行代碼時,盡管你使用了圓括號?()
,但是,由于圓括號在這種情況下是多余的(因為字典本身就是一個不可變的數據結構,可以作為單個元素存在),Python解釋器會將其視為一個元組,只不過這個元組里只有一個元素——一個字典。但是,當你使用?
print(type(a))
?時,你實際上是打印出變量?a
?所指向對象的類型。由于?a
?是一個元組(盡管它只包含一個元素),type(a)
?將返回?<class 'tuple'>
。如果你只想創建一個字典,并且不需要將其放在一個元組中,你應該這樣做:
a = {'Name':'python'}
print(type(a)) # 輸出: <class 'dict'>
在這個例子中,
a
?是一個字典,所以?type(a)
?會返回?<class 'dict'>
。
a = ({'Name':'python'},) # 注意末尾的逗號,它表明這是一個元組
print(type(a)) # 輸出: <class 'tuple'>
在這個例子中,末尾的逗號告訴Python解釋器這是一個元組,即使它只包含一個元素。沒有逗號的話,Python會將其視為一個字典(如果它是表達式的一部分)或者拋出一個語法錯誤(如果它是獨立的表達式)。
?
3.
為什么這兩個是一樣的
a=dict([('1','one'),('2','two'),('3','three')])#{'1': 'one', '2': 'two', '3': 'three'}
print(a)
?
在Python中,
dict
?函數可以接受一個可迭代對象作為參數,該可迭代對象中的元素應該是表示鍵值對的元組(或其他可迭代對象,但元組是最常見的)。當你使用這樣的語法調用?dict
?函數時,你實際上是告訴Python從給定的可迭代對象中構建一個字典。在你給出的例子中:
a = dict([('1','one'),('2','two'),('3','three')])
你傳遞了一個列表給?
dict
?函數,這個列表包含了三個元組,每個元組都代表了一個鍵值對。dict
?函數會遍歷這個列表,并將每個元組中的第一個元素作為鍵,第二個元素作為值,創建一個新的字典。因此,
dict
?函數會按照你提供的元組列表來構建字典,結果就是你看到的:
{'1': 'one', '2': 'two', '3': 'three'}
?