大部分人都會忽略的Python易錯點總結

2021-10-01 12:53:46 字數 2967 閱讀 2573

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 error

python用迴圈構造的函式陣列,執行這個陣列裡面的函式後返回值都一樣

'''

'''functions =

for i in

range(5

):deff

(x):

return x + i

for f in functions:

print

(f(7

))

上面程式的輸出是:

11

1111

1111

為什麼明明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)試試。

**舉例說明

'''

'''x =[1

,2,3

]print

(x.extend([2

,3,4

]))"""

輸出:[1,2,3,2,3,4]

"""print[2

,3,4

]))"""

輸出:[1,2,3,[2,3,4]]

"""

可以看到:

python類變數,類名取變數(classname.x)和self取變數(self.x)之間的區別?

類名取變數 和 self取變數它們初始值的位址是完全一樣。 (意味著值也一樣)

用類名取變數不會影響他們變數的位址。(以為著用類名取變數並且修改變數使得兩種取變數的方式值都發生變化)

但是用self取變數方式修改變數就會使得它們位址變得不一樣。(這意味著修改self取的變數只會影響self取變數這種方式的值,不會影響類名取變數方式的值)

看**理解這3句話:

'''

'''class

car:

color =

'gray'

defdescribe_car

(self)

:return car.color

defdescribe_self

(self)

:return self.color

test = car(

)# 類名取car.color和self.color初始值是一樣的.因為此時他們的位址是完全一樣的.

print

(test.describe_car())

#輸出:gray

print

(test.describe_self())

# 輸出:gray

print(,

id(car.color),,

id(test.color)

)#你可以看看位址是否相同

# 先修改car.color會影響self.color。因為此時他們的位址是完全一樣的

car.color =

'red'

print

(test.describe_car())

#輸出:red

print

(test.describe_self())

# 輸出:red

print(,

id(car.color),,

id(test.color)

)#你可以看看位址是否相同

# 修改self.color不會影響car.color,因為此時他們位址變得不一樣了。

test.color =

'blue'

print

(test.describe_car())

#輸出:red

print

(test.describe_self())

# 輸出:blue

print(,

id(car.color),,

id(test.color)

)#你可以看看位址是否相同

car.color =

'black'

print

(test.describe_car())

#輸出:black

print

(test.describe_self())

# 輸出:blue

print(,

id(car.color),,

id(test.color)

)#你可以看看位址是否相同

tuple元組不可以修改元素,這是元組和list列表的區別之一

x =(0

,1,2

)x[0]

=-1#這是錯誤的會報錯

typeerror:

'tuple'

object does not support item assignment

python魔法方法magic method,變數的順序問題

__mul__(self,other),呼叫這個魔術方法是self*other,它實際這這樣執行的:self.__mul(other)。

為何大部分人成不了技術專家

此文為我在csdn的新的sns裡看到的,感觸很深,和大家分享一下.裡面的許多人的觀點都讓我受益匪淺。如果你是專案經理,產品經理或者架構師,我真誠邀請你加入 如果你還是學生或者還是初學者,我建議你先等等,啥意思你自己考慮吧.或許很多人會非常不解的問,我是乙個程式設計師,我一直鑽研我的技術,我在某個領域...

大部分人都幹過的16件事

1 用手公尺缸的公尺裡面 插來 插去 2 看見路上的地磚,故意隔一格跳過 不走過界,要完全在格內 3 用鏡面反射太陽光,在教室照來照去 4 在硬幣上面鋪張紙,然後用鉛筆在上面塗,描個形出來 5 吃完糖果之後,將糖紙包回原本四四方方的形狀出來 6 在超市裡面踩著購物車行走 7 把畫著 小烏龜 的紙條貼...

報告顯示大部分免費應用都會竊取使用者隱私資訊

智慧型手機使用者一定都知道,免費應用雖說不收錢,但大部分都會在應用中顯示廣告。據安全反病毒企業bitdefender所說,我們其實根本就不知道這些應用的陰險狡詐及其從我們這裡獲得了多少利益。bitdefender最新的乙份報告中,提及免費應用實際上就相當於間諜軟體,因為使用者一旦安裝這些免費應用就面...