將 Python 3.2 的 keyword 換成 中文
Posted by tjwei on 星期六, 6月 25, 2011 with No comments
這是一個用到 ctypes 的 hack,將 python 3.2 的一些 Keyword 換成中文,然後可以用中文寫程式。
Source
Source
from ctypes import * class label(Structure): _fields_=[("lb_type",c_int),("lb_str",POINTER(c_char))] @property def lbstr(self): return string_at(self.lb_str).decode("utf8") if self.lb_str else None class labellist(Structure): _fields_=[("ll_nlabels", c_int),("ll_label", POINTER(label))] class grammar(Structure): _fields_ = [("g_ndfas", c_int), ("g_dfa", POINTER(c_int)), ("g_ll", labellist)] trans_tbl={"if":"若", "def": "定義", "class": "類", "for": "對所有", "in": "在", "from":"從", "import":"載入", "return": "傳回", "else": "否則", "try":"嘗試", "except":"例外"} ll=cast(pythonapi._PyParser_Grammar,POINTER(grammar)).contents.g_ll lb=ll.ll_label for i in range(ll.ll_nlabels): if lb[i].lbstr in trans_tbl: nstr=trans_tbl[lb[i].lbstr].encode("utf8") lb[i].lb_str=create_string_buffer(nstr,len(nstr)+1) locals().update({"印出":print, "範圍":range, "字串":str, "沒有":None, "性質":property}) # Show time! exec(""" 從 math 載入 sin 類 花花: @性質 定義 名字(我): 嘗試: 傳回 我._名字 例外: 傳回 "無名花花" 定義 決定是否吃(我, 食物): 傳回 "吃" 若 sin(食物)<0 否則 "不吃" 定義 自我介紹(我, 名字): 我._名字=名字 定義 吃(自己, 食物): 傳回 自己.名字+" "+自己.決定是否吃(食物)+" "+字串(食物) 某小花=花花() #某小花.自我介紹("玫瑰") 對所有 食物 在 範圍(10): 印出(某小花.吃(食物)) """)
Categories: python
0 意見:
張貼留言