用python示範一個簡單的AST(抽象文法樹),pythonast

來源:互聯網
上載者:User

用python示範一個簡單的AST(抽象文法樹),pythonast

假設對'a + 3 * b'進行解釋,其中a=2,b=5

代碼很簡單,就不再進行詳細的解釋了。

Num = lambda env, n: nVar = lambda env, x: env[x]Add = lambda env, a, b:_eval(env, a) + _eval(env, b)Mul = lambda env, a, b:_eval(env, a) * _eval(env, b)_eval = lambda env, expr:expr[0](env, *expr[1:])env = {'a':2, 'b':5}tree = (Add, (Var, 'a'),             (Mul, (Num, 3),                   (Var, 'b')))print _eval(env, tree)

輸出結果為17


一個簡單的Python程式

import random def roll_die_once(min = 1, max = 6):
 
怎用python實現這樣一個簡單程式

def numberInputer(prompt, quitflat): """ prompt: 輸入時的提示資訊, quitflag: 退出標識字 """ while True: gotter = rawinput(prompt+', "%s" for quit' % quitflag) if gotter==quitflag: break try: yield int(gotter) except: continuedegrees = []for degree in numberInputer(prompt="請輸入考試分數", quitflag="Q"): degrees.append(degreee)print "分數中大於60的分數之和", sum(filter(lambda x: x>=60, degrees))
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.