Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
д¸øÒÑÓбà³Ì¾­ÑéµÄ Python ³õѧÕßµÄ×ܽá
 
ת×ÔÍøÂ磬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-11-20
  3429  次浏览      27
 

µ±ÎÒ¿ªÊ¼Ñ§Ï°PythonµÄʱºò£¬ÓÐЩÊÂÎÒÏ£ÍûÎÒÒ»Ôç¾ÍÖªµÀ¡£ÎÒ»¨·ÑÁ˺ܶàʱ¼ä²Åѧ»áÕâЩ¶«Î÷¡£ÎÒÏëÒª°ÑÕâÐ©ÖØµã¶¼±à×뵽һƪÎÄÕµ±ÖС£ÕâÆªÎÄÕµÄÄ¿±ê¶ÁÕߣ¬ÊǸոտªÊ¼Ñ§Ï°PythonÓïÑÔµÄÓо­ÑéµÄ³ÌÐòÔ±£¬ÏëÒªÌø¹ýǰ¼¸¸öÔÂÑо¿PythonʹÓõÄÄÇЩËûÃÇÒѾ­ÔÚÓõÄÀàËÆ¹¤¾ß¡£°ü¹ÜÀíºÍ±ê×¼¹¤¾ßÕâÁ½½Ú¶ÔÓÚ³õѧÕßÀ´ËµÍ¬ÑùºÜÓаïÖú¡£

Îҵľ­ÑéÖ÷Òª»ùÓÚPython 2.7£¬µ«ÊÇ´ó¶àÊýµÄ¹¤¾ß¶ÔÈκΰ汾¶¼ÓÐЧ¡£

Èç¹ûÄã´ÓÀ´Ã»ÓÐʹÓùýPython£¬ÎÒÇ¿ÁÒ½¨ÒéÄãÔĶÁPython introduction£¬ÒòΪÄãÐèÒªÖªµÀ»ù±¾µÄÓï·¨ºÍÀàÐÍ¡£

°ü¹ÜÀí

PythonÊÀ½ç×î°ôµÄµØ·½Ö®Ò»£¬¾ÍÊÇ´óÁ¿µÄµÚÈý·½³ÌÐò°ü¡£Í¬Ñù£¬¹ÜÀíÕâЩ°üÒ²·Ç³£ÈÝÒס£°´ÕÕ¹ßÀý£¬»áÔÚ requirements.txt ÎļþÖÐÁгöÏîÄ¿ËùÐèÒªµÄ°ü¡£Ã¿¸ö°üÕ¼Ò»ÐУ¬Í¨³£»¹°üº¬°æ±¾ºÅ¡£ÕâÀïÓÐÒ»¸öÀý×Ó£¬±¾²©¿ÍʹÓÃPelican£º

pelican==3.3
Markdown
pelican-extended-sitemap==1.0.0

Python ³ÌÐò°üÓÐÒ»¸öȱÏÝÊÇ£¬ËüÃÇĬÈÏ»á½øÐÐÈ«¾Ö°²×°¡£ÎÒÃǽ«ÒªÊ¹ÓÃÒ»¸ö¹¤¾ß£¬Ê¹ÎÒÃÇÿ¸öÏîÄ¿¶¼ÓÐÒ»¸ö¶ÀÁ¢µÄ»·¾³£¬Õâ¸ö¹¤¾ß½Ðvirtualenv¡£ÎÒÃÇͬÑùÒª°²×°Ò»¸ö¸ü¸ß¼¶µÄ°ü¹ÜÀí¹¤¾ß£¬½Ð×öpip£¬Ëû¿ÉÒÔºÍvirtualenvÅäºÏ¹¤×÷¡£

Ê×ÏÈ£¬ÎÒÃÇÐèÒª°²×°pip¡£´ó¶àÊýpython°²×°³ÌÐòÒѾ­ÄÚÖÃÁËeasy_install£¨pythonĬÈϵİü¹ÜÀí¹¤¾ß£©£¬ËùÒÔÎÒÃǾÍʹÓÃeasy_install pipÀ´°²×°pip¡£ÕâÓ¦¸ÃÊÇÄã×îºóÒ»´ÎʹÓÃeasy_install ÁË¡£Èç¹ûÄ㲢ûÓа²×°easy_install £¬ÔÚlinuxϵͳÖУ¬Ã²ËÆ´Ópython-setuptools °üÖпÉÒÔ»ñµÃ¡£

Èç¹ûÄãʹÓõÄPython°æ±¾¸ßÓÚµÈÓÚ3.3£¬ ÄÇôVirtualenv ÒѾ­ÊDZê×¼¿âµÄÒ»²¿·ÖÁË£¬ËùÒÔûÓбØÒªÔÙÈ¥°²×°ËüÁË¡£

ÏÂÒ»²½£¬ÄãÏ£Íû°²×°virtualenvºÍvirtualenvwrapper¡£VirtualenvʹÄãÄܹ»ÎªÃ¿¸öÏîÄ¿´´ÔìÒ»¸ö¶ÀÁ¢µÄ»·¾³¡£ÓÈÆäÊǵ±ÄãµÄ²»Í¬ÏîĿʹÓò»Í¬°æ±¾µÄ°üʱ£¬ÕâÒ»µãÌØ±ðÓÐÓá£Virtualenv wrapper ÌṩÁËһЩ²»´íµÄ½Å±¾£¬¿ÉÒÔÈÃһЩÊÂÇé±äµÃÈÝÒס£

sudo pip install virtualenvwrapper

µ±virtualenvwrapper°²×°ºó£¬Ëü»á°ÑvirtualenvÁÐΪÒÀÀµ°ü£¬ËùÒÔ»á×Ô¶¯°²×°¡£

´ò¿ªÒ»¸öеÄshell£¬ÊäÈëmkvirtualenv test ¡£Èç¹ûÄã´ò¿ªÁíÍâÒ»¸öshell£¬ÔòÄã¾Í²»ÔÚÕâ¸övirtualenvÖÐÁË£¬Äã¿ÉÒÔͨ¹ýworkon test À´Æô¶¯¡£Èç¹ûÄãµÄ¹¤×÷Íê³ÉÁË£¬¿ÉÒÔʹÓÃdeactivate À´Í£Óá£

IPython

IPythonÊDZê×¼Python½»»¥Ê½µÄ±à³Ì»·¾³µÄÒ»¸öÌæ´úÆ·£¬Ö§³Ö×Ô¶¯²¹È«£¬Îĵµ¿ìËÙ·ÃÎÊ£¬ÒÔ¼°±ê×¼½»»¥Ê½±à³Ì»·¾³±¾Ó¦¸Ã¾ß±¸µÄºÜ¶àÆäËû¹¦ÄÜ¡£

µ±Äã´¦ÔÚÒ»¸öÐéÄâ»·¾³ÖеÄʱºò£¬¿ÉÒԺܼòµ¥µÄʹÓÃpip install ipython À´½øÐа²×°£¬ÔÚÃüÁîÐÐÖÐʹÓÃipython À´Æô¶¯

ÁíÒ»¸ö²»´íµÄ¹¦ÄÜÊÇ¡±±Ê¼Ç±¾¡±£¬Õâ¸ö¹¦ÄÜÐèÒª¶îÍâµÄ×é¼þ¡£°²×°Íê³Éºó£¬Äã¿ÉÒÔʹÓÃipython notebook£¬¶øÇÒ»áÓÐÒ»¸ö²»´íµÄÍøÒ³UI£¬Äã¿ÉÒÔ´´½¨±Ê¼Ç±¾¡£ÕâÔÚ¿ÆÑ§¼ÆËãÁìÓòºÜÁ÷ÐС£

²âÊÔ

ÎÒÍÆ¼öʹÓÃnose»òÊÇpy.test¡£ÎҴ󲿷ÖÇé¿öÏÂÓÃnose¡£ËüÃÇ»ù±¾ÉÏÊÇÀàËÆµÄ¡£ÎÒ½«½²½ânoseµÄһЩϸ½Ú¡£

ÕâÀïÓÐÒ»¸öÈËΪ´´½¨µÄ¿ÉЦµÄʹÓÃnose½øÐвâÊÔµÄÀý×Ó¡£ÔÚÒ»¸öÒÔtest_¿ªÍ·µÄÎļþÖеÄËùÓÐÒÔtest_¿ªÍ·µÄº¯Êý£¬¶¼»á±»µ÷Óãº

def test_equality():
assert True == False

²»³öËùÁÏ£¬µ±ÔËÐÐnoseµÄʱºò£¬ÎÒÃǵIJâÊÔûÓÐͨ¹ý¡£

(test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ nosetests
F
FAIL: test_nose_example.test_equality
Traceback (most recent call last):
File "/Users/jhaddad/.virtualenvs/test/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
self.test(*self.arg)
File "/Users/jhaddad/.virtualenvs/test/src/test_nose_example.py", line 3, in test_equality
assert True == False
AssertionError

nose.toolsÖÐͬÑùÒ²ÓÐһЩ±ã½ÝµÄ·½·¨¿ÉÒÔµ÷ÓÃ

from nose.tools import assert_true
def test_equality():
assert_true(False)

Èç¹ûÄãÏëʹÓøü¼ÓÀàËÆJUnitµÄ·½·¨£¬Ò²ÊÇ¿ÉÒԵģº

from nose.tools import assert_true
from unittest import TestCase
class ExampleTest(TestCase):
def setUp(self): # setUp & tearDown are both available
self.blah = False
def test_blah(self):
self.assertTrue(self.blah)

¿ªÊ¼²âÊÔ£º

(test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ nosetests
F
FAIL: test_blah (test_nose_example.ExampleTest)
Traceback (most recent call last):
File "/Users/jhaddad/.virtualenvs/test/src/test_nose_example.py", line 11, in test_blah
self.assertTrue(self.blah)
AssertionError: False is not true
Ran 1 test in 0.003s
FAILED (failures=1)

׿ԽµÄMock¿â°üº¬ÔÚPython 3 ÖУ¬µ«ÊÇÈç¹ûÄãÔÚʹÓÃPython 2£¬¿ÉÒÔʹÓÃpypiÀ´»ñÈ¡¡£Õâ¸ö²âÊÔ½«½øÐÐÒ»¸öÔ¶³Ìµ÷Ó㬵«ÊÇÕâ´Îµ÷Óý«ºÄʱ10s¡£Õâ¸öÀý×ÓÏÔÈ»ÊÇÈËΪÄóÔìµÄ¡£ÎÒÃÇʹÓÃmockÀ´·µ»ØÑù±¾Êý¾Ý¶ø²»ÊÇÕæÕýµÄ½øÐе÷Óá£

import mock
from mock import patch
from time import sleep
class Sweetness(object):
def slow_remote_call(self):
sleep(10)
return "some_data" # lets pretend we get this back from our remote api call
def test_long_call():
s = Sweetness()
result = s.slow_remote_call()
assert result == "some_data"

µ±È»£¬ÎÒÃǵIJâÊÔÐèÒªºÜ³¤µÄʱ¼ä¡£

(test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ nosetests test_mock.py       
Ran 1 test in 10.001s
OK

Ì«ÂýÁË£¡Òò´ËÎÒÃÇ»áÎÊ×Ô¼º£¬ÎÒÃÇÔÚ²âÊÔʲô£¿ÎÒÃÇÐèÒª²âÊÔÔ¶³Ìµ÷ÓÃÊÇ·ñÓÐÓ㬻¹ÊÇÎÒÃÇÒª²âÊÔµ±ÎÒÃÇ»ñµÃÊý¾ÝºóÒª×öʲô£¿´ó¶àÊýÇé¿öÏÂÊǺóÕß¡£ÈÃÎÒÃǰÚÍÑÕâ¸öÓÞ´ÀµÄÔ¶³Ìµ÷Óðɣº

import mock
from mock import patch
from time import sleep
class Sweetness(object):
def slow_remote_call(self):
sleep(10)
return "some_data" # lets pretend we get this back from our remote api call
def test_long_call():
s = Sweetness()
with patch.object(s, "slow_remote_call", return_value="some_data"):
result = s.slow_remote_call()
assert result == "some_data"

ºÃ°É£¬ÈÃÎÒÃÇÔÙÊÔÒ»´Î£º

(test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ nosetests test_mock.py          
Ran 1 test in 0.001s
OK

ºÃ¶àÁË¡£¼Çס£¬Õâ¸öÀý×Ó½øÐÐÁË»ÄÌÆµÄ¼ò»¯¡£¾ÍÎÒ¸öÈËÀ´½²£¬ÎÒ½ö½ö»áºöÂÔ´ÓÔ¶³ÌϵͳµÄµ÷Ó㬶ø²»ÊÇÎÒµÄÊý¾Ý¿âµ÷Óá£

nose-progressiveÊÇÒ»¸öºÜºÃµÄÄ£¿é£¬Ëü¿ÉÒÔ¸ÄÉÆnoseµÄÊä³ö£¬ÈôíÎóÔÚ·¢Éúʱ¾ÍÏÔʾ³öÀ´£¬¶ø²»ÊÇÁôµ½×îºó¡£Èç¹ûÄãµÄ²âÊÔÐèÒª»¨·ÑÒ»¶¨µÄʱ¼ä£¬ÄÇôÕâÊǼþºÃÊ¡£
pip install nose-progressive ²¢ÇÒÔÚÄãµÄnosetestsÖÐÌí¼Ó--with-progressive

µ÷ÊÔ

iPDBÊÇÒ»¸ö¼«ºÃµÄ¹¤¾ß£¬ÎÒÒѾ­ÓÃËü²é³öÁ˺ܶà·ËÒÄËù˼µÄbug¡£pip install ipdb °²×°¸Ã¹¤¾ß£¬È»ºóÔÚÄãµÄ´úÂëÖÐimport ipdb; ipdb.set_trace()£¬È»ºóÄã»áÔÚÄãµÄ³ÌÐòÔËÐÐʱ£¬»ñµÃÒ»¸öºÜºÃµÄ½»»¥Ê½Ìáʾ¡£Ëüÿ´ÎÖ´ÐгÌÐòµÄÒ»Ðв¢ÇÒ¼ì²é±äÁ¿¡£

pythonÄÚÖÃÁËÒ»¸öºÜºÃµÄ×·×ÙÄ£¿é£¬°ïÖúÎÒ¸ãÇå³þ·¢ÉúÁËʲô¡£ÕâÀïÓÐÒ»¸öûʲôÓõÄpython³ÌÐò£º

a = 1
b = 2
a = b

ÕâÀïÊǶÔÕâ¸ö³ÌÐòµÄ×·×Ù½á¹û£º

(test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ python -m trace --trace tracing.py 
--- modulename: tracing, funcname: <module>
tracing.py(1): a = 1
tracing.py(2): b = 2
tracing.py(3): a = b
--- modulename: trace, funcname: _unsettrace
trace.py(80): sys.settrace(None)

µ±ÄãÏëÒª¸ãÇå³þÆäËû³ÌÐòµÄÄÚ²¿¹¹ÔìµÄʱºò£¬Õâ¸ö¹¦Äܷdz£ÓÐÓá£Èç¹ûÄãÒÔǰÓùýstrace£¬ËüÃǵŤ×÷·½Ê½ºÜÏàÏñ

ÔÚһЩ³¡ºÏ£¬ÎÒʹÓÃpycallgraphÀ´×·×ÙÐÔÄÜÎÊÌâ¡£Ëü¿ÉÒÔ´´½¨º¯Êýµ÷ÓÃʱ¼äºÍ´ÎÊýµÄͼ±í¡£

×îºó£¬objgraph¶ÔÓÚ²éÕÒÄÚ´æÐ¹Â¶·Ç³£ÓÐÓá£ÕâÀïÓÐһƪ¹ØÓÚÈçºÎʹÓÃËü²éÕÒÄÚ´æÐ¹Â¶µÄºÃÎÄ¡£

Gevent

Gevent ÊÇÒ»¸öºÜºÃµÄ¿â£¬·â×°ÁËGreenlets£¬Ê¹µÃPython¾ß±¸ÁËÒì²½µ÷ÓõŦÄÜ¡£Êǵģ¬·Ç³£°ô¡£ÎÒ×î°®µÄ¹¦ÄÜÊÇPool£¬Ëü³éÏóÁËÒì²½µ÷Óò¿·Ö£¬¸øÎÒÃÇÌṩÁË¿ÉÒÔ¼òµ¥Ê¹ÓõÄ;¾¶£¬Ò»¸öÒì²½µÄmap()º¯Êý£º

from gevent import monkey
monkey.patch_all()

from time import sleep, time

def fetch_url(url):
print "Fetching %s" % url
sleep(10)
print "Done fetching %s" % url

from gevent.pool import Pool

urls = ["http://test.com", "http://bacon.com", "http://eggs.com"]

p = Pool(10)

start = time()
p.map(fetch_url, urls)
print time() - start

·Ç³£ÖØÒªµÄÊÇ£¬ÐèҪעÒâÕâ¶Î´úÂë¶¥²¿¶Ôgevent monkey½øÐеIJ¹¶¡£¬Èç¹ûûÓÐËüµÄ»°£¬¾Í²»ÄÜÕýÈ·µÄÔËÐС£Èç¹ûÎÒÃÇÈÃPythonÁ¬Ðøµ÷Óà fetch_url 3´Î£¬Í¨³£ÎÒÃÇÆÚÍûÕâ¸ö¹ý³Ì»¨·Ñ30Ãëʱ¼ä¡£Ê¹ÓÃgevent£º

(test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ python g.py 
Fetching http://test.com
Fetching http://bacon.com
Fetching http://eggs.com
Done fetching http://test.com
Done fetching http://bacon.com
Done fetching http://eggs.com
10.001791954

Èç¹ûÄãÓкܶàÊý¾Ý¿âµ÷ÓûòÊÇ´ÓÔ¶³ÌURLs»ñÈ¡£¬ÕâÊǷdz£ÓÐÓõġ£ÎÒ²¢²»ÊǺÜϲ»¶»Øµ÷º¯Êý£¬ËùÒÔÕâÒ»³éÏó¶ÔÎÒÀ´ËµÐ§¹ûºÜºÃ¡£

½áÂÛ

ºÃ°É£¬Èç¹ûÄã¿´µ½ÕâÀïÁË£¬ÄÇôÄãºÜ¿ÉÄÜÒѾ­Ñ§µ½ÁËһЩж«Î÷¡£ÕâЩ¹¤¾ß£¬ÔÚ¹ýÈ¥µÄÒ»ÄêÀï¶ÔÎÒÓ°ÏìÖØ´ó¡£ÕÒ´òËüÃÇ»¨·ÑÁ˲»ÉÙʱ¼ä£¬ËùÒÔÏ£Íû±¾ÎÄÄܹ»¼õÉÙÆäËûÈËÏëÒªºÜºÃÀûÓÃÕâÃÅÓïÑÔÐèÒª¸¶³öµÄŬÁ¦¡£

   
3429 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

WEBÓ¦ÓóÌÐòUIÄ£°æ´úÂë±àд
C# ±àÂë¹æ·¶ºÍ±à³ÌºÃϰ¹ß
ʲôÊÇ·ÀÓùÐÔ±à³Ì
ÉÆÓÚ·ÀÊØ-½¡×³´úÂëµÄ·ÀÓùÐÔ
Visual C++±à³ÌÃüÃû¹æÔò
JavaScript³ÌÐò±àÂë¹æ·¶


Éè¼ÆÄ£Ê½Ô­ÀíÓëÓ¦ÓÃ
´ÓÐèÇó¹ý¶Éµ½Éè¼Æ
Èí¼þÉè¼ÆÔ­ÀíÓëʵ¼ù
ÈçºÎ±àд¸ßÖÊÁ¿´úÂë
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
Èí¼þ¿ª·¢¹ý³ÌÖ¸ÄÏ


ijȫÇòÖªÃûͨÐŹ«Ë¾ ´úÂëÕû½à
ºáºÓµç»ú ÈçºÎ±àд¸ßÖÊÁ¿´úÂë
ij֪Ãû½ðÈÚÈí¼þ·þÎñÉÌ ´úÂëÆÀÉó
¶«Èí¼¯ÍÅ ´úÂëÖØ¹¹
ij½ðÈÚÈí¼þ·þÎñÉÌ ¼¼ÊõÎĵµ
Öдïµçͨ Éè¼ÆÄ£Ê½Ô­ÀíÓëʵ¼ù
·¨¹úµçÐÅ ¼¼ÊõÎĵµ±àдÓë¹ÜÀí