如何畫出一段複雜代碼中函數的棧圖?

最近在看《像計算機科學家一樣思考python》,在第三章的時候有能力去獨立畫出一些小的棧圖,但到了第四章的時候隨著函數之間的調用增多,不知道這麼多的函數怎麼才能正確的畫出棧圖呢?

圖片是我畫的棧圖和代碼。下面的代碼自己也知道函數是怎麼相互調用的就是不知道怎麼畫出來

感謝大大們了,祝大家生活愉快。

_________________________________________________________________

import math

import turtle

def draw_pie(t, n, r):

"""畫一個餅然後向右移動

t: Turtle

n: number of segments

r: length of the radial spokes

"""

polypie(t, n, r)

t.pu() #朝下

t.fd(r*2 + 10)

t.pd() #朝上

def polypie(t, n, r):

"""把一個餅分成兩個部分

t: Turtle

n: number of segments

r: length of the radial spokes

"""

angle = 360.0 / n

for i in range(n):

isosceles(t, r, angle/2)

t.lt(angle) #左轉角度

def isosceles(t, r, angle):

"""畫一個等腰三角形

海龜在山頂開始和結束,面對著基地的中央。

t: Turtle

r: length of the equal legs

angle: 頂點的角度 angle in degrees

"""

y = r * math.sin(angle * math.pi / 180)

t.rt(angle) #右轉角度

t.fd(r) #移動的距離

t.lt(90+angle) #左轉的角度

t.fd(2*y) #移動的距離

t.lt(90+angle) #左轉的角度

t.fd(r) #移動的距離

t.lt(180-angle) #左轉的角度

bob = turtle.Turtle()

bob.pu() #向上

bob.bk(130) #前進130

bob.pd() #向下

# 用各種各樣的面來畫出各種各樣的

size = 40 #大小

draw_pie(bob, 5, size)

draw_pie(bob, 6, size)

draw_pie(bob, 7, size)

draw_pie(bob, 8, size)

bob.hideturtle()

turtle.mainloop()


安裝這個

pip install pyinstrument

A Python profiler that records the call stack of the executing code, instead of just the final function in it.


推薦閱讀:

推薦幾本python去門基礎的書籍,希望練習題多一些,並配有詳細的講解?
python中的類型是怎麼實現不用顯式定義,動態確定數據類型的?
如何使用pyinstaller打包python腳本?
python學習有必要了解底層嗎?

TAG:Python | Python入門 | Python開發 | Python教程 | Python編程 |