锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 璇峰憡璇夋垜榪欐牱鍋氬湪Python鏋氫婦璁ゅ彲鍛紵 渚嬪錛岀洰鍓嶆垜姝e湪鍐欎竴涓父鎴忥紝甯屾湜鑳藉鎻愬嚭“涓婂崌”錛?#8220;涓嬮檷”錛?#8220;宸?#8221;鍜?#8220;鏉冨埄”銆傛垜浣跨敤鐨勶紝鍥犱負(fù)鎴戣繕娌℃湁鎯沖嚭濡備綍鏋氫婦宸ヤ綔锜掕泧錛屾墍浠ユ垜鐨勯昏緫鏄繖鏍風(fēng)殑涓滆タ鏁h惤瀛楃涓詫細(xì) 鎴戣鏇挎崲 鎴戠粰浜?jiǎn)涓涓?鑷矺ugel琛ワ紝浣嗗彟涓涓洿綺劇畝閫夐」 璇?code>collections.namedtuple瀵硅薄鍙互鎻愪緵榪欐牱涓涓懡鍚嶇┖闂達(dá)細(xì) 濡傛灉鎮(zhèn)ㄦ槸浣跨敤Python 2.6 +閭d箞浣犲彲浠ヤ嬌鐢?a rel=nofollow>namedtuple 銆備粬浠湁浼樺娍錛屾湁鍥哄畾鏁伴噺鐨勫睘鎬э紝褰撲綘闇瑕佺殑鎵鏈夋灇涓懼鹼紝鍙互浣跨敤瀹冨氨鍍忎竴涓厓緇勩? 涓轟簡(jiǎn)鏇村ソ鍦版帶鍒舵灇涓懼鹼紝浣犲彲浠ュ垱寤鴻嚜宸辯殑鏋氫婦綾匯? 澹版槑 鎮(zhèn)ㄧ殑 濡傛灉鎮(zhèn)ㄧ‘淇℃?zhèn)ㄩ渶瑕佷竴涓灇涓撅紝鍏朵粬浜哄洖絳?em>濡備綍鍋氬埌榪欎竴鐐廣備絾鏄鎴戜滑鏄庣櫧浣?em>涓轟粈涔?/em>瑕佷粬浠紵璁よ瘑鐨勫姩鏈哄皢鏈夊姪浜庨夋嫨鐨勮В鍐蟲柟妗堛? 鍘熷瓙鍊?/strong>鐨刢 -灝忔暟鐩緢瀹規(guī)槗閫氳繃鍛ㄥ洿錛屽瓧絎︿覆鏄笉鏄傚湪Python涓紝“瀛楃涓詫紝濡?#8221;琛屽姩鏄畬鍏ㄤ嬌鐢ㄥソ浜?jiǎn)寰堝銆傛澶栵紝浠諱綍瑙e喅鏂規(guī)錛屾渶緇堝彧鏈変竴涓暟瀛楁洿涓轟弗閲嶇殑璋冭瘯錛? 鏈夋剰涔夌殑浠峰艱涓璫 - 錛屼綘緇忓父瑕?/em>澶勭悊鐜版湁鐨勫夠鏁幫紝鑰屽彧鎯寵涓浜涜娉曠硸銆傝繖涓嶆槸榪欓噷鐨勬儏鍐點(diǎn)傜劧鑰岋紝 榪樻湁鍏朵粬鏈夋剰涔夌殑淇℃伅鎯充綘鍙兘浼?xì)鑱旀儧_埌鐨勬柟鍚戯紝濡傦紙dx鍜宒y錛夎澆浣?鏇村鐨勪笅鏂囥? 綾誨瀷媯(gè)鏌?/strong> -鍦–錛屾灇涓懼府鍔╄拷璧舵棤鏁堢殑鍊煎湪緙栬瘧鏃躲傚畞鍙壓鐗詫紝浣嗕竴鑸殑Python緙栬瘧鍣ㄤ腑閿叆媯(gè)鏌ュ皯銆? 鍙嶆?/strong> 錛堜笉瀛樺湪鍦–鏋氫婦錛?-浣犳兂鐭ラ亾鎵鏈夌殑鏈夋晥鍊箋? 鍥犳錛屽湪Python鍖栬В鍐蟲柟妗堢殑鍏夌錛屽彧鏄嬌鐢ㄥ瓧絎︿覆錛屽彲鑳芥湁/鐨勬墍鏈夋湁鏁堢殑鍊艱緗竴涓垪琛細(xì) 璇鋒敞鎰忥紝璋冭瘯鍣ㄤ細(xì)鍛婅瘔浣犺鍑芥暟涓?浜?浣滀負(fù)瀹冪殑鍙傛暟璋冪敤銆備換浣曡В鍐蟲柟妗堬紝鍏朵腑 鍦ㄨ璦LISP鐨勫搴紝榪欑鐢ㄦ硶鏄縐頒負(fù)絎﹀彿 -鍘熷瓙瀵硅薄鍙敤鐨勫皢琚涓哄鏄撲負(fù)鏁板瓧錛?鑰屾槸甯︾潃鏂囨湰鍊?/em> 銆?錛堝噯紜紝絎﹀彿涓茬被錛岃屾槸涓涓崟鐙殑綾誨瀷銆傜劧鑰岋紝Python緇忓父浣跨敤姝e垯瀛楃涓插皢浣跨敤鍏朵腑鐨凩ISP絎﹀彿銆傦級(jí) 浣犲彲浠ョ粨鍚堢殑鎬濇兂錛? 濡傛灉浣犳兂璧朵笂mispellings錛堝湪榪愯鏃墮棿錛夛細(xì) 濡傛灉浣犳兂鍧氭寔閿叆涓涓墠緙寰楀埌瀹屾垚錛屾妸涓綾諱互涓婏細(xì) 鎴栧彧鏄湪涓涓崟鐙殑鏂囦歡錛屼嬌涓涓ā鍧椼? 妯″潡鍏佽鐢ㄦ埛鍋氭噿鎯?code>Directions.UP璺寵繃鍓嶇紑 - 鍙栧喅浜庝綘鏄惁璁や負(fù)榪欐槸涓涓姞鍙鋒垨鍑忓彿... 錛堟垜涓漢涓嶆兂琚己榪瀷 濡傛灉鏈変粈涔堟湁鐢ㄧ殑淇℃伅/鍔熻兘鎬т環(huán)鍊間笌姣忎釜錛?#8220;姝g‘”鐨勪環(huán)鍊艱涓嶄粎鏄竴涓?浠繪剰鐨勶紝瀹冩槸X杞存鏂瑰悜涓婁簡(jiǎn)錛? 濡傛灉浣犲湪鍋氫粈涔堝湪榪?code>def move(self, direction): if direction == 'up': self.y += STEP elif direction == 'down': self.y -= STEP elif direction == 'left': self.x -= STEP elif direction == 'right': self.x += STEP 鏄繖鏍風(fēng)殑錛? 姣斾綘鐪熺殑鍠滄鍐欎負(fù)錛? 錛屽氨鏄繖鏍鳳紒 鎵浠ワ紝浣犳兂瑕佺殑涓滆タ錛屽彉鎴愯繖涓?strong>瀹炰緥 錛? 鎴栧彧鏄?strong>綾?/strong> 錛? 璇瘋浣忥紝鍦≒ython涓紝綾諱篃鏄璞★紙浠庝換浣曞叾浠栧璞′笉鍚岋級(jí)錛屼綘鍙互瀵瑰畠浠繘琛屾瘮杈冿細(xì) 涓鑸潵璇達(dá)紝鎯呭喌鍙兘鏇存竻媧侊紝浣嗗鏋滀綘鍒椾婦鐨勬蹇墊湁涓瀹氱殑灞傛鍏崇郴錛屼粬浠洿鎺ヤ笌鐝湁鏃跺緩妯℃槸闈炲父濂界殑銆? 榪欐槸綆鍗曡屾湁鏁堢殑錛? 鐢ㄦ硶錛? 鍘熸枃鍦板潃錛?/p>
http://www.cnblogs.com/jans2002/archive/2006/09/30/519393.htmldef move(self, direction):
if direction == "up":
# Do something
"up"鍠滄鐨勪笢瑗?code>Directions.up1)
class Directions:
up = 0
down = 1
left = 2
right =3
2)
dirUp, dirDown, dirLeft, dirRight = range(4)
3)
>>> import collections
>>> dircoll=collections.namedtuple('directions', ('UP', 'DOWN', 'LEFT', 'RIGHT'))
>>> directions=dircoll(0,1,2,3)
>>> directions
directions(UP=0, DOWN=1, LEFT=2, RIGHT=3)
>>> directions.DOWN
1
>>>
4)
def enum(args, start=0):
class Enum(object):
__slots__ = args.split()
def __init__(self):
for i, key in enumerate(Enum.__slots__, start):
setattr(self, key, i)
return Enum()
>>> e_dir = enum('up down left right')
>>> e_dir.up
0
>>> e_dir = enum('up down left right', start=1)
>>> e_dir.up
1
__slots__瀵嗗皝鐨勬灇涓劇被錛屾病鏈夋洿澶氱殑灞炴у彲浠ヨ璁劇疆涓?榪欐槸浠庝竴涓被鍒涘緩鐨勫璞?code>Enum璐駭銆?namedtuple綾諱篃鍙互namedtuple docs涓哄熀紜錛屽湪榪欑鎯呭喌涓嬩綘涔熷彲浠ュ緱鍒頒竴涓厓緇勭殑鍔熻兘銆傝
5)
寮︿箰璧庡洖錛堝張鍚嶇鍙鳳級(jí)
DIRECTIONS = set(['up', 'down', 'left', 'right'])
def move(self, direction):
# only if you feel like checking
assert direction in DIRECTIONS
# you can still just use the strings!
if direction == 'up':
# Do something
direction鍏跺疄0姣旇繖鏇寸碂緋?/em>寰楀錛?鍛藉悕絀洪棿瀛楃涓?/h2>
'up'浼樹簬UP = 'up' ... RIGHT = 'right' 涓庡叾浠栬В鍐蟲柟妗堛?class Directions:
UP = "up"
...
RIGHT = "right"
from directions import *if濡傛灉鎴戜嬌鐢ㄥ畠鐨勯鐜囷級(jí)銆?瀵硅薄涓庡姛鑳?/h2>
def move(self, direction):
self.x += direction.dx * STEP
self.y += direction.dy * STEP
# Written in full to give the idea.
# Consider using collections.namedtuple
class Direction(object):
def __init__(self, dx, dy, name):
self.dx = dx
self.dy = dy
self.name = name
def __str__(self):
return name
UP = Direction(0, 1, "up")
...
RIGHT = Direction(1, 0, "right")
class Direction(object):
pass
class Up(Direction):
dx = 0
dy = 1
...
class Right(Direction):
dx = 1
dy = 0
direction == Up
6)
class Enum(object):
def __init__(self, *keys):
self.__dict__.update(zip(keys, range(len(keys))))
>>> x = Enum('foo', 'bar', 'baz', 'bat')
>>> x.baz
2
>>> x.bat
3
]]>
py2exe鏄竴涓皢python鑴氭湰杞崲鎴恮indows涓婄殑鍙嫭绔嬫墽琛岀殑鍙墽琛岀▼搴?*.exe)鐨勫伐鍏鳳紝榪欐牱錛屼綘灝卞彲浠ヤ笉鐢ㄨpython鑰屽湪windows緋葷粺涓婅繍琛岃繖涓彲鎵ц紼嬪簭銆?br>
py2exe宸茬粡琚敤浜庡垱寤簑xPython,Tkinter,Pmw,PyGTK,pygame,win32com client鍜宻erver,鍜屽叾瀹冪殑鐙珛紼嬪簭銆俻y2exe鏄彂甯冨湪寮婧愯鍙瘉涓嬬殑銆?br>
浜屻佸畨瑁卲y2exe
浠?a target=_blank>http://prdownloads.sourceforge.net/py2exe涓嬭澆騫惰繍琛屼笌浣犳墍瀹夎鐨凱ython瀵瑰簲鐨刾y2exe鐗堟湰鐨刬nstaller錛岃繖灝嗗畨瑁卲y2exe鍜岀浉搴旂殑渚嬪瓙錛涜繖浜涗緥瀛愯瀹夎鍦╨ib\site-packages\py2exe\samples鐩綍涓嬨?br>
涓夈乸y2exe鐨勭敤娉?/strong>
濡傛灉浣犳湁涓涓悕涓篽elloworld.py鐨刾ython鑴氭湰錛屼綘鎯蟲妸瀹冭漿鎹負(fù)榪愯鍦╳indows涓婄殑鍙墽琛岀▼搴忥紝騫惰繍琛屽湪娌℃湁瀹夎python鐨剋indows緋葷粺涓婏紝閭d箞棣栧厛浣犲簲鍐欎竴涓敤浜庡彂甯冪▼搴忕殑璁劇疆鑴氭湰渚嬪mysetup.py錛屽湪鍏朵腑鐨剆etup鍑芥暟鍓嶆彃鍏ヨ鍙mport py2exe 銆?br>mysetup.py紺轟緥濡備笅:
# mysetup.py
from distutils.core import setup
import py2exe
setup(console=["helloworld.py"])
鐒跺悗鎸変笅闈㈢殑鏂規(guī)硶榪愯mysetup.py:
python mysetup.py py2exe
涓婇潰鐨勫懡浠ゆ墽琛屽悗灝嗕駭鐢熶竴涓悕涓篸ist鐨勫瓙鐩綍錛屽叾涓寘鍚簡(jiǎn)helloworld.exe,python24.dll,library.zip榪欎簺鏂囦歡銆?br>濡傛灉浣犵殑helloworld.py鑴氭湰涓敤浜?jiǎn)宸簿~栬瘧鐨凜鎵╁睍妯″潡錛岄偅涔堣繖浜涙ā鍧椾篃浼?xì)琚嫰偞濆湪涓瓙鐩綍涓Q屽悓鏍鳳紝鎵鏈夌殑dll鏂囦歡鍦ㄨ繍琛屾椂閮芥槸闇瑕佺殑錛岄櫎浜?jiǎn)绯痪l熺殑dll鏂囦歡銆?br>dist瀛愮洰褰曚腑鐨勬枃浠跺寘鍚簡(jiǎn)浣犵殑紼嬪簭鎵蹇呴』鐨勪笢瑗匡紝浣犲簲灝嗚繖涓瓙鐩綍涓殑鎵鏈夊唴瀹逛竴璧峰彂甯冦?br>
榛樿鎯呭喌涓嬶紝py2exe鍦ㄧ洰褰昫ist涓嬪垱寤轟互涓嬭繖浜涘繀欏葷殑鏂囦歡錛?br>1銆佷竴涓垨澶氫釜exe鏂囦歡銆?br>2銆乸ython##.dll銆?nbsp;
3銆佸嚑涓?pyd鏂囦歡錛屽畠浠槸宸茬紪璇戠殑鎵╁睍鍚嶏紝瀹冧滑鏄痚xe鏂囦歡鎵闇瑕佺殑錛涘姞涓婂叾瀹冪殑.dll鏂囦歡錛岃繖浜?dll鏄?pyd鎵闇瑕佺殑銆?br>4銆佷竴涓猯ibrary.zip鏂囦歡錛屽畠鍖呭惈浜?jiǎn)宸簿~栬瘧鐨勭函鐨刾ython妯″潡濡?pyc鎴?pyo
涓婇潰鐨刴ysetup.py鍒涘緩浜?jiǎn)涓涓帶鍒跺彴鐨刪elloword.exe紼嬪簭錛屽鏋滀綘瑕佸垱寤轟竴涓浘褰㈢敤鎴風(fēng)晫鐨勭▼搴忥紝閭d箞浣犲彧闇瑕佸皢mysetup.py涓殑console=["helloworld.py"]鏇挎崲涓簑indows=["myscript.py"]鏃㈠彲銆?br>
py2exe涓嬈¤兘澶熷垱寤哄涓猠xe鏂囦歡錛屼綘闇瑕佸皢榪欎簺鑴氭湰鏂囦歡鐨勫垪琛ㄤ紶閫掔粰console鎴杦indows鐨勫叧閿瓧鍙傛暟銆傚鏋滀綘鏈夊嚑涓浉鍏寵仈鐨勮剼鏈紝閭d箞榪欐槸寰堟湁鐢ㄧ殑銆?br>榪愯涓嬮潰涓懡浠わ紝灝嗘樉紺簆y2exe鍛戒護(hù)鐨勬墍鏈夊懡浠よ鏍囪銆?br>python mysetup.py py2exe --help
鍥涖佹寚瀹氶澶栫殑鏂囦歡
涓浜涘簲鐢ㄧ▼搴忓湪榪愯鏃墮渶瑕侀澶栫殑鏂囦歡錛岃濡傞厤緗枃浠躲佸瓧浣撱佷綅鍥俱?br>濡傛灉鍦ㄥ畨瑁呰剼鏈腑鐢╠ata_files鍙夐」鎸囧畾浜?jiǎn)閭d簺棰濆鐨勬枃錃g錛岄偅涔坧y2exe鑳藉皢榪欎簺鏂囦歡鎷瘋礉鍒癲ist瀛愮洰褰曚腑銆俤ata_files搴斿寘鍚竴涓厓緇?target-dir, files)鍒楄〃錛屽叾涓殑files鏄繖浜涢澶栫殑鏂囦歡鐨勫垪琛ㄣ?br>紺轟緥濡備笅錛?br># mysetup.py
from distutils.core import setup
import glob
import py2exe
setup(console=["helloworld.py"],
data_files=[("bitmaps",
["bm/large.gif", "bm/small.gif"]),
("fonts",
glob.glob("fonts\\*.fnt"))],
)
璇存槑錛歞ata_files閫夐」灝嗗垱寤轟竴涓瓙鐩綍dist\bitmaps錛屽叾涓寘鍚袱涓?gif鏂囦歡錛涗竴涓瓙鐩綍dist\fonts錛屽叾涓寘鍚簡(jiǎn)鎵鏈夌殑.fnt鏂囦歡銆?br>
浜斻乄indows NT services
浣犲彲浠ラ氳繃浼犻掍竴涓猻ervice鍏抽敭瀛楀弬鏁扮粰setup鍑芥暟鏉ュ緩閫燱indows NT services
,榪欎釜service鍙傛暟鐨勫煎繀欏繪槸涓涓狿ython妯″潡鍚?鍖呭惈涓service綾?鐨勫垪琛ㄣ?br>紺轟緥濡備笅錛?br># mysetup.py
from distutils.core import setup
import py2exe
setup(service=["MyService"])
鎵寤洪犵殑鍙墽琛岀殑service鏄彲浠ラ氳繃鍦ㄥ叾鍚庤窡涓瀹氱殑鍛戒護(hù)琛屽弬鏁版爣璁版潵鑷瀹夎鍜屽嵏杞界殑銆備綘鍙互閫氳繃鍦ㄨ繖涓彲鎵ц鐨剆ervice(exe)鍚庤窡涓-help鍙傛暟鏉ュ緱鍒版洿澶氱殑甯姪銆?br>鍏丆OM servers
浣犲彲浠ラ氳繃浼犻掍竴涓猚om_server 鍏抽敭瀛楀弬鏁扮粰setup鍑芥暟鏉ュ緩閫燱indows NT services
,榪欎釜service鍙傛暟鐨勫煎繀欏繪槸涓涓狿ython妯″潡鍚?鍖呭惈涓涓垨澶氫釜COM server 綾?鐨勫垪琛ㄣ?br>紺轟緥濡備笅錛?br># mysetup.py
from distutils.core import setup
import py2exe
setup(com_server=["win32com.server.interp"])
榛樿鎯呭喌涓嬶紝DLL鍜孍XE servers琚緩閫狅紝浣犱笉闇瑕佸畠浠殑璇濅綘鍙互綆鍗曠殑鍒犻櫎瀹冧滑銆?br>
]]>