[英]What is the difference between FROM random IMPORT* and IMPORT random? (random() and randrange())
書中有這個代碼示例:
from random import*
for i in range(15):
print random.randrange(3,13,3)
並在書中得到了結果。
但是當我在 Netbeans 中運行它時。 出現了以下說明:
*
回溯(最后一次調用):文件“C:\Users\Lacces\Documents\NetBeansProjects\Python_GS_Tanuljunk_meg_programozni\src\Adatszerkezetek\Lista.py”,第 11 行,打印中 random.randrange(3,13,3) #3- tól 13-ig, 3 érték elválasztásal AttributeError: 'builtin_function_or_method' object 沒有屬性 'randrange'
*
我打電話來幫助谷歌,我發現這是為了導入:
import random
有了這個,我用這個而不是隨機導入*
它奏效了! 沒有例外!
有人可以向我解釋為什么第一次拋出異常,為什么不第二次拋出異常(對於初學者程序員:))
當您from random import *
時,來自random
的所有定義都將成為當前名稱空間的一部分。 這意味着您不必為任何內容添加random.
,但這也意味着您可能會在不知情的情況下發生名稱沖突。
首選方法是import random
。
由於這些令人驚訝的副作用,不鼓勵從模塊導入所有內容:模塊random
包含function random,因此import * from random
執行以下操作:
from random import randrange
from random import random
...
現在,當您訪問random
時,您訪問的是function而不是module 。 您可以使用randrange
(不帶前綴random.
),但import random
並明確說明 function 來自哪個模塊是更好的主意。
如果您使用'from moduleName import....',那么您將獲得您在導入后指定的所有類、函數和變量,或者如果您指定 *.: from random import * for i in range(15),則獲得全部:
打印 randrange(3,13,3)
但請注意,這並不是很好地全部導入,最好只導入所需的類、函數和變量,所以如果你只需要 randrange,你需要使用:
from random import randrange
for i in range(15):
print randrange(3,13,3)
如果您使用 import random,這意味着您導入模塊,因此您需要指定 moduleName。 當你想使用它時:
import random
for i in range(15):
print random.randrange(3,13,3)
from random import *
從名為 random 的模塊導入所有函數,但不是random
本身。
這里可以直接隨機調用函數如下: randrange(3,13,3)
等
import random
導入名稱 random,您以后可以從中調用函數,如下所示: random.randrange(3,13,3)
等
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.