3個常見的Python用法錯誤及解決方法

2021-10-21 20:48:43 字數 2392 閱讀 1204

這篇文章中,我將介紹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程...