python3 之初學者常犯的5個錯誤
1. Creating a copy of dictionary or lists.
Whenever you need to make a copy of a dictionary or list, do not simply use the assignment operator.
Right way: Use the copy()
or deepcopy()
method.
2. Dictionary keys.
Remember Boolean class is the subclass of Integer. Integer equivalent of True is 1 and that of False is 0. Hence value of key 1 is overwritten
3. Updating lists or dictionaries.
Most the sequence object methods like sort, update, append, add etc works in place to increase performance by avoiding to create a separate copy un-necessarily.
Do not try to assign the output of such methods to variable.
In some cases, python try to reuse the existing immutable objects. String interning is one such case
>>> a = "gmail" >>> b = "gmail" >>> a is b True
All strings of length 1 are interned. String having anything except ASCII characters, digits and underscore in them are not interned.
Let‘s see.
>>> a = "@gmail" >>> b = "@gmail" >>> a is b False
Also remember==
is different thanis
operator.==
checks if values are equal or not whileis
checks if both variable are pointing to same object.
5. Default arguments are evaluated only once.
Consider below example.
def func(a, lst=[]): lst.append(a) return lst print(func(1)) print(func(2))
What do you think will be the output of above two print statements?
Lets try to run it.
>>> def func(a, lst=[]): ... lst.append(a) ... return lst ... >>> print(func(1)) [1] >>> print(func(2)) [1, 2]
python3 之初學者常犯的5個錯誤