大部分人都会忽略的Python易错点总结
生活随笔
收集整理的這篇文章主要介紹了
大部分人都会忽略的Python易错点总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
python中復數實現(-2) ** 0.5和開根號sqrt(-2)的區別
(-2)**0.5和sqrt(-2)是不同的,前者是復數后者是會報錯的。
print((-2)**0.5) #輸出:(8.659560562354934e-17+1.4142135623730951j)import math math.sqrt(-2)#報錯 ValueError: math domain errorPython用循環構造的函數數組,運行這個數組里面的函數后返回值都一樣
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' functions = [] for i in range(5):def f(x):return x + ifunctions.append(f)for f in functions:print(f(7))上面程序的輸出是:
11 11 11 11 11為什么明明f(x)返回的是x+i,而i是從0到4變化的。按道理執行f(x)后的返回值也應該是變化的,為何我們執行f(x)后是5個一樣的值。
答:這是因為python中函數保存的外面的變量都是存儲的是地址。也就是說x+i中的i是地址,循環執行完成后。i這個地址的值變成了4.所以最后執行f(7)就是一直是11==7+4.
不信你可以輸出id(i)試試。
注意: Python取變量的地址的方法是id(變量名)。
Python數組列表list中extend()和append()的區別
代碼舉例說明
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' x = [1,2,3] print(x.extend([2,3,4])) """ 輸出: [1,2,3,2,3,4] """ print(x.append([2,3,4])) """ 輸出: [1,2,3,[2,3,4]] """可以看到:
- extend()是把參數通過合并的形式融合到原來的列表里面。(融合)
- append()是把參數當做一個元素加到原來列表里面。(吞并)
Python類變量,類名取變量(className.x)和self取變量(self.x)之間的區別?
看代碼理解這3句話:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' class Car:color = 'gray'def describe_car(self):return Car.color def describe_self(self):return self.color test = Car() # 類名取Car.color和self.color初始值是一樣的.因為此時他們的地址是完全一樣的. print(test.describe_car()) #輸出:gray print(test.describe_self()) # 輸出:gray print('Carcolor地址:',id(Car.color),'self.color地址:',id(test.color))#你可以看看地址是否相同# 先修改Car.color會影響self.color。因為此時他們的地址是完全一樣的 Car.color = 'red' print(test.describe_car()) #輸出:red print(test.describe_self()) # 輸出:red print('Carcolor地址:',id(Car.color),'self.color地址:',id(test.color))#你可以看看地址是否相同# 修改self.color不會影響Car.color,因為此時他們地址變得不一樣了。 test.color = 'blue' print(test.describe_car()) #輸出:red print(test.describe_self()) # 輸出:blue print('Carcolor地址:',id(Car.color),'self.color地址:',id(test.color))#你可以看看地址是否相同# 經過上一步此時他們兩地址不一樣了。修改Car.color不會影響self.color。因為此時他們的地址是不一樣的 Car.color = 'black' print(test.describe_car()) #輸出:black print(test.describe_self()) # 輸出:blue print('Carcolor地址:',id(Car.color),'self.color地址:',id(test.color))#你可以看看地址是否相同tuple元組不可以修改元素,這是元組和List列表的區別之一
x = (0,1,2) x[0]=-1#這是錯誤的會報錯 TypeError: 'tuple' object does not support item assignmentPython魔法方法magic method,變量的順序問題
__mul__(self,other),調用這個魔術方法是self*other,它實際這這樣執行的:self.__mul(other)。 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的大部分人都会忽略的Python易错点总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python:给定一个不超过5位的正整数
- 下一篇: Python中numpy中tile和re