這篇文章中,我將介紹3個常見的且你不想犯的python錯誤。
錯誤1:預設的可變物件
python中可變的物件是什麼?可變物件是可以更改的物件,比如列表(list),集合(set)和字典(dict)。
為了方便討論,我們定乙個簡單且無用的函式:
def add(x, y=):
return y
在這個add函式中,我們設定空列表 y 為預設的可變物件,呼叫add函式:
def add(x, y=):
return y
print(add('halil'))
print(add('yıldırım'))
輸出:
['halil']
['halil', 'yıldırım']
由結果推斷,預設值被改變了。第一次呼叫 add('halil')時,預設引數 y = ['halil'],並開始覆蓋 add 函式的預設值。
我們呼叫 __default__檢視函式的預設值:
def add(x, y=):
return y
add('halil')
print(add.__defaults__)
add('yıldırım')
print(add.__defaults__)
output:
(['halil'],)
(['halil', 'yıldırım'],)
由結果可知,預設列表改變了。
解決方法:預設的可變物件設定為none
如下例子:
def add(x, y=none):
if y is none:
y = list()
else:
return y
print(add('halil'))
print(add('yıldırım'))
output:
['halil']
['yıldırım']
由結果可知,預設物件沒有改變
錯誤2:複製
首先定義乙個字典:
a =
利用賦值運算子複製字典 a :
a =
b = a
刪除字典 b 的第乙個key值:
del b['a']
列印字典 a 和 b 的值:
a =
b = a
del b['a']
print(b)
print(a)
output:
由結果可知,刪除字典b第乙個元素的同時,也刪除了字典a的第乙個元素。這不是我們想要看到的,我們需要字典a不受影響。
解決方法:copy函式
使用copy函式,則能保證字典a不受影響,如下**:
import copy
a =
b = copy.copy(a)
del b['a']
print(b)
print(a)
output:
錯誤3:檔案命名
如果你命名檔案的名字與你所呼叫庫的名字相同時,則會報錯。如下**:
import random
print(random.random())
output:
file "c:\users\halilibrahimyıldırım\desktop\medium\python\random.py", line 3, in print(random.random())
typeerror: 'module' object is not callable
切記 !永遠不要命名檔案與呼叫的庫名相同。
這三個常見錯誤,希望對您由所幫助。
python3 常見錯誤 一
以下全部是在python3中適用。錯誤一 函式預設引數 python允許為函式的引數提供預設的可選值。但是它可能會導致一些易變預設值的混亂。例子 我們希望每次呼叫myfun函式,list1都為預設空列表,其實python並不會輸出我們想要的結果。原因 python的函式引數的預設值只會在函式定義的地...
Python常見錯誤
1.indentationerror expected an indented block python語言是一款對縮排非常敏感的語言,給很多初學者帶來了困惑,即便是很有經驗的python程式設計師,也可能陷入陷阱當中。最常見的情況是tab和空格的混用會導致錯誤,或者縮排不對,而這是用肉眼無法分別的...
python 常見錯誤
原因 pylint 未安裝 配置正確 解決 pip show pylint 看看版本 settings.json 設定成這樣就好了 python.linting.pylintpath pylint python.pythonpath usr bin python3 使用vscode開發python程...