2017-03-18 149 views
1

如何在Python 2.7彼此不同勢?烏龜和龜的區別?

import turtle 
star = turtle.Turtle() 
for i in range(50): 
    star.forward(50) 
    star.right(144) 
turtle.done() 
+0

龜是包含類龜的模塊。如果您在默認的Python庫文件夾中使用Debian OS檢查。 。例如,/ usr /庫/蟒蛇(版本)/龜 – repzero

回答

1

turtle是包的名稱,而Turtle是類的名稱。

導入類的另一種方法是

import turtle.Turtle 

另外,你確定最後一行是turtle.done(),而不是star.done()

+0

或'從龜進口Turtle'但你會在當前模塊中只有'Turtle'更換'turtle.Turtle'到處 –

+0

'star.done()'會是一個錯誤,'turtle.done()'是有效的。 'done()'頂層函數是'mainloop()'頂層函數的同義詞,不適用於烏龜實例。作爲頂級函數,'mainloop()'調用單一屏幕實例的同名方法。 – cdlane

+0

我確信turtle.done()和done()一樣屬於'_tg_utilities' – Jdpurohit

1

烏龜模塊是不尋常的。爲了讓開始的程序員更容易,Turtle類的所有方法也可以作爲在默認(未命名)烏龜實例上操作的頂級函數。 Screen類的所有方法也可用作在默認(唯一)屏幕實例上操作的頂級函數。因此,無論這樣的:

import turtle 

star = turtle.Turtle() # turtle instance creation 

for i in range(5): 
    star.forward(50) # turtle instance method 
    star.right(144) # turtle instance method 

screen = turtle.Screen() # access sole screen instance 
screen.mainloop() # screen instance method 

這:

import turtle 

for i in range(5): 
    turtle.forward(50) # function, default turtle 
    turtle.right(144) 

turtle.done() # function, mainloop() synonym, acts on singular screen instance 

都是有效的實現。許多烏龜程序最終將功能接口與對象接口混合在一起。爲了避免這種情況,我強烈推薦以下導入語法:

from turtle import Turtle, Screen 

這迫使對象的方法來使用龜,使功能的方法不可用:

from turtle import Turtle, Screen 

star = Turtle() # turtle instance creation 

for i in range(5): 
    star.forward(50) # turtle instance method 
    star.right(144) # turtle instance method 

screen = Screen() # access sole screen instance 
screen.mainloop() # screen instance method