2017-03-19 61 views
0

我有一個Python腳本,我需要導入python標準random庫和導入pylab函數。我寫了一個簡單的程序,在工作文件的腳本中使用「隨機」,但只要添加了pylab的導入,它就停止運行。見下文。在一個文件中導入'random'和'pylab'不起作用

使用 random

示例腳本:

import random 
#from pylab import * 

def getRandomAngle(): 
    return random.randint(0,360) 

def getRandomAngleList(num): 
    angle_list = [] 
    for i in range(num): 
     angle_list.append(getRandomAngle()) 
    return angle_list 

#Call randomAngle method to print a random angle 
randomAngleList = getRandomAngleList(5) 
print randomAngleList 

打印預期輸出:

[96, 163, 212, 344, 77] 

現在,Uncomment pylab在上述程序的line 2進口,然後引發以下錯誤 -

AttributeError: 'builtin_function_or_method' object has no attribute 'randint' 

Could a請幫助我瞭解,如何包括這兩種進口?我相信pylab裏面有一些隨機函數會導致問題,但不確定。我正在使用Python 2.7版本。

+2

現在你知道爲什麼「明星」進口是邪惡的。在某些特殊情況下,或者當您在解釋器中玩耍時,它們都很有用,但請不要在正常腳本中使用它們。 –

+1

注意:如果你覺得每次寫'pylab'太長了:'將pylab導入爲pl'。它使得它更短,所有的pylab實體仍然在其專用的命名空間。 – farsil

+0

@farsil如果我使用'from pylab import *',但使用別名導入隨機 - '''''''''''''''''所以這似乎更方便嗎? –

回答

2

問題是pylab有一個名爲random的函數,這將覆蓋您導入的random模塊。

一種解決方案是避免from pylab import *說,而不是

import random 
import pylab 

前綴pylab功能,當你需要他們。

在Python中使用from ... import *可能會有問題,因爲這可能會覆蓋已經定義的函數/類/變量在您的代碼。