簡體   English   中英

FROM random IMPORT* 和 IMPORT random 有什么區別? (隨機()和 randrange())

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM