python中複數實現( 2) 0.5和開根號sqrt( 2)的區別 ( 2) 0.5和sqrt( 2)是不同的,前者是複數後者是會報錯的。 Python用迴圈構造的函數數組,運行這個數組裡面的函數後返回值都一樣 上面程式的輸出是: 為什麼明明f(x)返回的是x+i,而i是從0到4變化的。按道理執行 ...
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):
def f(x):
return x + i
functions.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()的區別
代碼舉例說明
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)之間的區別?
- 類名取變數 和 self取變數它們初始值的地址是完全一樣。 (意味著值也一樣)
- 用類名取變數不會影響他們變數的地址。(以為著用類名取變數並且修改變數使得兩種取變數的方式值都發生變化)
- 但是用self取變數方式修改變數就會使得它們地址變得不一樣。(這意味著修改self取的變數只會影響self取變數這種方式的值,不會影響類名取變數方式的值)
PS:遇到問題沒人解答?需要Python學習資料?可以加點擊下方鏈接自行獲取
note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76
看代碼理解這3句話:
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 assignment
Python魔法方法magic method,變數的順序問題
__mul__(self,other),調用這個魔術方法是self*other,它實際這這樣執行的:self.__mul(other)。