2017-03-03 66 views
0

目前我正在學習Python的(而不是編程),我試圖解決我的第一個問題,這種語言。python是否讀取腳本與其他語言不同?

首先我檢查是什麼import Xfrom X import Y之間的差異。我知道第一次加載到命名空間中的軟件包,但這個包的方法,所以你需要寫X.Y,在另一方面,第二導入方式加載到命名空間中的功能和參考包。儘管如此,我不明白爲什麼import math.sqrt失敗。我收到這個錯誤:math is not a package

有誰知道會發生什麼?

然後我想怎麼寫這樣的說法:

sum([ 
    pow(dic1[elem]–dic2[elem], 2) 
    for elem in dic1 if elem in dic2 
    ]) 

正如我告訴我才知道規劃,我知道它在做什麼,但它似乎對我來說有點不合邏輯,因爲似乎蟒蛇讀取腳本的方向與「典型」語言不同。

如果我沒有錯,這句話總結了兩個詞典中的元素之間的所有差異(動力2),但只有在for語句的條件是dic2存在elem時才做總和。

這是正確的嗎?

謝謝!

+0

見http://stackoverflow.com/q/16341775/476。如果您應該一次詢問一個問題,那麼我們可能已經將其作爲一個副本過濾掉了。 – deceze

+0

嘗試'輸入數學;數學.__ file__'與'import xml; XML .__ file__'。 「數學」是用C實現的,而不是Python,因此可能會有不同的導入行爲。 –

回答

1

關於第一個問題,請嘗試:

from math import sqrt 

到你的第二個問題,是的,蟒蛇似乎做的事情在一個奇怪的命令,如果你是從其他語言。例如:

x=1 if a=2 else 0 

這是相同的話說:

if a=2: 
    x=1 
else: 
    x=0 

,如果你這樣做:

x=[i*2 for i in [1,2,3,4]] 

它意味着使每一個元素的變量i列表中的[ 1,2,3,4],乘以2並從結果中創建一個新列表。所以在上面的例子中x是:

[2,4,6,8] 

基本上,你會習慣它。

+0

感謝您的回答。第一部作品,但我想了解導入數學失敗的原因。 你的第二個答案是完美的!謝謝! – Maik