锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鑰屼唬鐞嗙被鐨勶紝鍒欏寘鍚竴鏁村鏈夌戶鎵垮叧緋葷殑綾匯?/p>
鎵浠ワ紝鎴戠獊鍙戝鎯籌紝涓嶅鐢ㄧ戶鎵挎潵瀹炵幇鑿滃崟銆?/p>
鎬濊礬鏄紝鏈変釜menu綾伙紝鐒跺悗媧劇敓錛?/p>
涓涓敤浠ユ斁瀛愯彍鍗曪紝 鍙︿竴涓敤浠ュ疄鐜扮粦瀹氬嚱鏁扮殑鑿滃崟銆?/p>
浠g爜濡備笅錛?/p>
# -*- coding:utf-8 -*- class Menu(object): def click(self): class callbackMenu(Menu): def click(self,*args,**kwds): class subMenu(Menu): def show(self): def click(self): def showfather(p): def showfather2(p,symbol='->'): if __name__=='__main__': 鐜板湪鎯蟲兂錛岄潰鍚戝璞$殑璁捐鐪熷闅劇殑銆?/p>
絎竴姝ユ娊璞″氨琚崱浣忎簡銆?/p>
鍦ㄦ矇鎬濆綍涓紝浣滆呭父甯告彁紺?#8220;鐢ㄧ被鏉ヨ〃紺烘蹇?/strong>”銆?/p>
浣嗘槸錛岀幇鍦ㄥ緢鐘硅鮑錛屾垜鐨刾ython鐗堟湰鐨勯渶涓嶉渶瑕佺戶鎵垮憿銆?/p>
鍙﹀錛屽紩涓鍙ュ湪C++緙栫▼瑙勮寖閲岀殑錛?/p>
“緇ф壙錛屼笉鏄負浜嗛噸鐢紝鑰屾槸涓轟簡琚噸鐢?/strong>”銆?/p>
鎴戣寰楅潪甯告湁閬撶悊錛屽洜涓烘垜闇瑕佷竴涓寚閽堟牱鐨勪笢瑗匡紝 鏉ュ鐞嗗悇綰ц彍鍗曪紝濡傛灉鎻愪緵鐨勬帴鍙d笉涓鏍鳳紝灝卞緢闅劇敤榪欎釜 鎸囬拡浜嗐?/p>
榪欓噷鏄叧浜庡嚱鏁板璞$殑榛樿鍊糵unc_defaults銆?/p>
鎴戜滑鐭ラ亾錛屽鏋滈粯璁ゅ兼槸涓嶅彉綾誨瀷鐨勶紝閭d箞榪欎釜榛樿鍊兼槸涓嶄細鍙樼殑銆?/p>
鑰屾垜鐜板湪瑕佸仛鐨勶紝灝辨槸璁╅粯璁ゅ艱兘澶熷彉鍖栵紝璁板綍涓婃鐨勫箋?/p>
IDLE 2.6.5 鍙互鐪嬪埌錛岃繖鏍烽粯璁ゅ煎氨琚敼鍙樹簡銆?/p>
鍏跺疄鎴戜滑鍙互瀵筬.func_defaults榪涜璧嬪箋?/p>
闃呰鍏ㄦ枃 from itertools import zip_longest 鎴戞敼榪涗簡涓涓嬶紝浣垮叾涔熷叿鏈?span style="FONT-FAMILY: Courier New">set鏂規(guī)硶錛屽綋鐒跺氨鏄鍔犱簡鍑犺浠g爜銆?/p>
IDLE 2.6.5 >>> class Point(object): >>> p=Point() 鍙互鐪嬪埌錛?/span>Point 鐨?/span> __slot__ 涓斁鍏?/span>x錛寉錛寊涓変釜鍚嶅瓧錛岀劧鍚庡氨鑷姩鐢熸垚綾諱技getx錛宻etx鐨勬柟娉曘?/span> metaclass 鐪熸槸寮哄ぇ鍟娿?/span> 榪欎釜鍑芥暟鎺ュ彈涓涓弬鏁般傜劧鍚庢牴鎹渶姹傦紝榪斿洖搴旇鏇挎崲鐨勫瓧絎︿覆銆?br>IDLE 2.6.5 涓嬮潰鏄憳鑷猵ython鏂囨。錛?span style="FONT-FAMILY: Comic Sans MS">The Python Standard Library 8.2. re 鈥?Regular expression operations錛夛細 Ifrepl is a function, it is called for every non-overlapping occurrence ofpattern. The function takes a single match object argument, and returns the replacement string. For example:
def __init__(self,label):
self.label=label
pass
def __init__(self,label,callback,father=None):
self.label=label
self.rcallback=callback
self.rfather=father
print "currentClick",self.label
print
if callable(self.rcallback):
self.rcallback(*args,**kwds)
else:
return None
def __init__(self,label,submenu,father=None):
self.label=label
self.rsubmenu=submenu
self.rfather=father
for i,sub in enumerate(self.rsubmenu):
print "[%d] %s"%(i,sub.label)
print "currentMenu",self.label
self.show()
if(hasattr(p,"rfather") and p.rfather==None):
print p.label
return
print p.label,'<-',
showfather(p.rfather)
if p.rfather==None:
print p.label,
return
showfather2(p.rfather,symbol)
print symbol,p.label,
def handle(p):
while True:
print '-'*40
showfather2(p)
print
p.click()
try:
get=raw_input("Input:")
if get in ['q','Q']:
break
get=int(get)
if get==100:
if hasattr(p,"rfather") and p.rfather!=None:
p=p.rfather
continue
if isinstance(p.rsubmenu[get],callbackMenu):
p.rsubmenu[get].click()
elif isinstance(p.rsubmenu[get],subMenu):
fp=p
p=p.rsubmenu[get]
p.rfather=fp
except:
print "Wrong Input"
sub=subMenu("sub",[callbackMenu("cb1",None),
callbackMenu("cb2",None)])
sub2=subMenu("sub2",[callbackMenu("cb2_1",None),
callbackMenu("cb2_2",None)])
sub3=subMenu(
"sub3",
[subMenu("subsub1",
[callbackMenu("subcb1",None),
callbackMenu("subcb2",None)]),
subMenu("subsub2",
[callbackMenu("sub2cb1",None),
callbackMenu("sub2cb2",None)])])
main=subMenu("Main",[sub,sub2,sub3])
handle(main)
鍦ㄨ繖閲岋紝鎴戠敤杈撳叆100鏉ヨ繑鍥炰笂涓綰ц彍鍗曘?/p>
>>> def f(x=10):
f.func_defaults=x,
print x
>>> f()
10
>>> f(2)
2
>>> f()
2
>>>
綾誨埆錛?/strong>Python 鏌ョ湅璇勮
鏂囩珷鏉ユ簮:http://hi.baidu.com/mirguest/blog/item/a6da9f64076e3a37ab184cd1.html
]]>
def str_split(str, n):
"str_split('aabbcc', 2) --> ['aa', 'bb', 'cc']"
args = [iter(str)] * n
return [''.join(i) for i in zip_longest(*args, fillvalue='')]
綾誨埆錛?/strong>Python 鏌ョ湅璇勮
鏂囩珷鏉ユ簮:http://hi.baidu.com/mirguest/blog/item/49a57fb581ac40e731add12f.html
]]>
>>> class M(type):
def __new__(cls, name, bases, classdict):
for attr in classdict.get('__slots__', ( )):
if attr.startswith('_'):
def getter(self, attr=attr):
return getattr(self, attr)
def setter(self, val=0, attr=attr):
return setattr(self, attr, val)
classdict['get' + attr[1:]] = getter
classdict['set' + attr[1:]] = setter
return type.__new__(cls, name, bases, classdict)
__metaclass__ = M
__slots__ = ['_x', '_y' ,'_z']
>>> dir(p)
['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__metaclass__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', '_x', '_y', '_z', 'getx', 'gety', 'getz', 'setx', 'sety', 'setz']
>>> p.setx(10)
>>> p.getx()
10
>>>
綾誨埆錛?/strong>Python 鏌ョ湅璇勮
鏂囩珷鏉ユ簮:http://hi.baidu.com/mirguest/blog/item/a33c7d5314d7ca0b377abe68.html
]]>
>>> import re
>>> r=re.compile(r'a{1,2}')
>>> def myrepl(m):
s=m.group(0)
if s=='a':
return 'one a'
else:
return 'two a'
>>> r.sub(myrepl,'a aa aaa')
'one a two a two aone a'
>>>
灝辨槸鍍?(-3)*(3+3)鐨勬爲灝辨槸錛?/p>
鐒跺悗錛屾垜灝辯敤python瀹炵幇浜嗕竴涓嬨傚洜涓簆ython涓嶤++涓嶅悓錛岋紙浣滆呬嬌鐢ㄤ簡鍙ユ焺綾伙級錛屾垜榪欓噷灝辨病鑰冭檻榪欎箞澶氥?/p>
涓嬮潰鏄疄鐜幫細
# -*- coding:utf-8 -*-
class One_node(object):
def __init__(self,n):
self.n=n
def __str__(self):
return str(self.n)
class Unary_node(object):
def __init__(self,op,n):
self.op=op
self.n=n
def __str__(self):
return "("+self.op+str(self.n)+")"
class Binary_node(object):
def __init__(self,op,left,right):
self.op=op
self.left=left
self.right=right
def __str__(self):
return "("+str(self.left)+self.op+str(self.right)+")"
class Ternary_node(object):
def __init__(self,left,middle,right):
self.left=left
self.middle=middle
self.right=right
def __str__(self):
return "("+str(self.left)+"?"+str(self.middle)+":"+str(self.right)+")"
def Expr(*argc):
if len(argc)==1:
return One_node(*argc)
elif len(argc)==2:
return Unary_node(*argc)
elif len(argc)==3:
return Binary_node(*argc)
if __name__=="__main__":
x=Expr(10)
print x
x=Expr("-",10)
print x
x=Expr("*",2,10)
print x
x=Expr("*",Expr(10),Expr("-",3))
print x
x=Expr("*",x,x)
print x
x=Ternary_node(x,x,x)
print x