#æ·±å
¥åéåå¼ç¨å¯¹è±¡
ä»å¤©æ¯2014å¹´8æ4æ¥ï¼è¿æ®µæ¶é´ç¾ç¥¸æ¥è¿åçï¼æ¾ç¤ºä¸ä¹
åæå±±çå·¥åçç¸ï¼æ»ä¼¤ä¸å°ï¼ç¶åæ¯äºåå°éï¼ä¹ææ»ä¼¤ã为ææå¨ç¾é¾ä¸å伤害ç人们ç®ä¸ç¥·åã
å¨[ãæ°¸è¿å¼ºå¤§ç彿°ã](./106.md)é£ä¸è®²ä¸ï¼è齿ï¼http://qiwsir.github.ioï¼å·²ç»åçå®ä»¬ç®è¿°äºä¸ä¸åéï¼ä¹åæä»¬å°±ä¸ç´å¨ä½¿ç¨åéï¼æ¯æ¬¡ä½¿ç¨åéï¼é½è¦æä¸ä¸ªæä½ï¼å°±æ¯èµå¼ãæ¬è®²å次æåè¿ä¸ªä¸¤ä¸ªäºæ
ï¼å°±æ¯è¦è®©çå®å¯¹åéåèµå¼æä¸ä¸ªç¥å
¶ç¶åç¥å
¶æä»¥ç¶ç认è¯ãå½ç¶ï¼æåè½ä¸è½è¾¾å°æ¤ç®çï¼ä¸»è¦çææ¯ä¸æ¯è¯´çéä¿ææäºãå¦ææ¨æ²¡ææç½ï¼å°±è¯´ææè¯´çè¿ä¸å¤å¥½ï¼å¯ä»¥èç³»æï¼æåä¸ºæ¨æå³ã
##åéå对象
å¨[ãlearning pythonã](http://shop.oreilly.com/product/0636920028154.do)飿¬ä¹¦éé¢ï¼ä½è
对åéã对象åå¼ç¨çå
³ç³»éè¿°çé常æäºãæè¿éå¨å¾å¤§ç¨åº¦ä¸æ¯åä»çå¯åãæè°¢ä½è
Mark Lutzå
ççå·¨èã
åºç¨ãlearning pythonãä¸çä¸ä¸ªè§ç¹ï¼**åéæ ç±»åï¼å¯¹è±¡æç±»å**
å¨pythonä¸ï¼å¦æè¦ä½¿ç¨ä¸ä¸ªåéï¼ä¸éè¦æå声æï¼åªéè¦å¨ç¨çæ¶åï¼ç»è¿ä¸ªåéèµå¼å³å¯ãè¿éç¹å«å¼ºè°ï¼åªè¦ç¨ä¸ä¸ªåéï¼å°±è¦ç»è¿ä¸ªåéèµå¼ã
æä»¥ï¼åè¿æ ·æ¯ä¸è¡çã
>>> x
Traceback (most recent call last):
File "", line 1, in
NameError: name 'x' is not defined
å夿éï¼ä¸å®è¦æ³¨æçæ¥éä¿¡æ¯ã妿å
å
å°åä¸ä¸ªåéï¼è没æèµå¼ï¼é£ä¹python认为è¿ä¸ªåéæ²¡æå®ä¹ãèµå¼ï¼ä¸ä»
ä»
æ¯ç»ä¸ä¸ªé空çå¼ï¼ä¹å¯ä»¥ç»ä¸ä¸ªç©ºå¼ï¼å¦ä¸ï¼é½æ¯å
许ç
>>> x = 3
>>> lst = []
>>> word = ""
>>> my_dict = {}
å¨åé¢è®²è¿°ä¸ï¼ææåºäºä¸ä¸ªç±»æ¯ï¼å°±æ¯åééè¿ä¸æ ¹çº¿ï¼è¿ç对象ï¼å
·ä½å°±å¯è½æ¯ä¸ä¸ªint/listçï¼ï¼è¿ä¸ªç±»æ¯è¢«å¾å¤äººæ¥åäºï¼ç®æ¯æèé½çé¦ååãé£ä¹ï¼å¦æè¦ç¨ä¸ç§ä¸¥æ ¼çè¯è¨æ¥æè¿°ï¼åéå¯ä»¥ç解为ä¸ä¸ªç³»ç»è¡¨çå
ç´ ï¼å®æ¥æè¿æå对象çå½å空é´ã太严èäºï¼ä¸å¥½çè§£ï¼å°±çè§£æé£ä¸ªç±»æ¯å§ãåéå°±æ¯åå¨ç³»ç»ä¸çä¸ä¸ªä¸è¥¿ï¼è¿ä¸ªä¸è¥¿æä¸ç§è½åï¼è½å¤ç¨ä¸æ ¹çº¿ä¸æå¯¹è±¡è¿æ¥ï¼å®è½å¤éé±¼ã
对象å¢ï¼å±å¼æ³è±¡ã卿ºå¨çå
åä¸ï¼ç³»ç»åé
ä¸ä¸ªç©ºé´ï¼è¿éé¢å°±æ¾çæè°çå¯¹è±¡ï¼ææ¶åæ¾æ°åï¼ææ¶åæ¾å符串ãå¦ææ¾æ°åï¼å°±æ¯intç±»åï¼å¦ææ¾å符串ï¼å°±æ¯strç±»åã
æ¥ä¸æ¥çäºæ
ï¼å°±æ¯åé¢è¯´çåéç¨èªå·±ææ¥æçè½åï¼æå¯¹è±¡åèªå·±è¿æ¥èµ·æ¥ï¼æéè¿æ¥å¯¹è±¡ç©ºé´ï¼ï¼è¿å°±æ¯å¼ç¨ãå¼ç¨å®æï¼å°±å®ç°äºèµå¼ã

çå°ä¸é¢çå¾äºå§ï¼ä»å¾ä¸å°±æ¯è¾é²æç表示äºåéå对象çå
³ç³»ãæä»¥ï¼ä¸¥æ ¼å°å°ï¼åªææ¾å¨å
å空é´ä¸ç对象ï¼ä¹å°±æ¯æ°æ®ï¼ææç±»åï¼èåéæ¯æ²¡æç±»åçãè¿ä¹è¯´å¦æè¿æ²¡æå½»åºæç½ï¼å°±åæä¸ä¸ªæ¯å»ï¼åé就好æ¯éé±¼çäººï¼æ¹æ°´é就好åå
åï¼é颿好å¤é±¼ï¼æåç§åæ ·çé±¼ï¼å®ä»¬å°±æ¯å¯¹è±¡ãéé±¼ç人ï¼åéï¼çä»»å¡å°±æ¯ç¨æç§æ¹å¼ï¼é±¼å¿å¼è¯±ï¼æèªå·±åé±¼éè¿é±¼çº¿è¿æ¥èµ·æ¥ãé£ä¹ï¼é±¼æ¯æç±»åçï¼æé²¢é±¼ã鲫鱼ã带鱼ï¼å¸¦é±¼ä¹è·å°æ¹æ°´äºäºï¼é¾éæ¯æ·¡æ°´å¸¦é±¼ï¼åµåµï¼å°±è¿ä¹æ¯æ·¡å§ï¼å«è¾çï¼ï¼éé±¼ç人ï¼åéï¼æ²¡æè¿ç§ç±»åï¼ä»éå°ä¸åç±»åçé±¼ã
è¿ä¸ªæ¯å»å¤ªçäºãååççè§£å§ãçå®æå¥½çæ¯å»ï¼å«å¿è®°å享ã
åä¸ä¸ªåéå¯ä»¥åæ¶æå两个对象åï¼ç»å¯¹ä¸è½è踩两åªè¹ãå¦æè¿æ ·å¢ï¼
>>> x = 4
>>> x = 5
>>> x
5
åéxå
æåäºå¯¹è±¡4ï¼ç¶åæå对象5ï¼å½åè
æ¾ççæ¶åï¼èªå¨è·ç¬¬ä¸ä¸ªå¯¹è±¡4æ¥è§¦å
³ç³»ãåçxï¼å¼ç¨ç对象就æ¯5äºãé£ä¹4å¢ï¼ä¸æ¦æ²¡æåéå¼ç¨å®äºï¼å®å°±åæäºå¤éé鬼ãpythonæ¯å¾åå¬çï¼å®ç»å¯¹ä¸å
许å¨å
åä¸åå¨å¤éé鬼ã塿¯è¿äºä¸è¥¿é½è¢«çååå¾ï¼è对åå¾ï¼pythonæä¸ä¸ªèªå¨çæ¶åæºå¶ã
å¨ç½ä¸æ¾äºä¸ä¸ªå¾ç¤ºè¯´æï¼å¾å¥½ï¼å¼ç¨è¿æ¥ï¼æ¥æºï¼http://www.linuxidc.com/Linux/2012-09/69523.htmï¼
>>> a = 100 #宿äºåéa对å
å空é´ä¸ç对象100çå¼ç¨
å¦ä¸å¾æç¤ºï¼

ç¶åï¼åæä½äºï¼
>>> a = "hello"
å¦ä¸å¾æç¤ºï¼

忥å
åä¸çé£ä¸ª100å°±å为åå¾è¢«æ¶éäºãèä¸ï¼è¿ä¸ªæ¶éè¿ç¨æ¯pythonèªå¨å®æçï¼ä¸ç¨æä»¬æå¿ã
é£ä¹ï¼pythonæ¯æä¹è¿è¡å徿¶éçå¢ï¼å¨[Quora](http://www.quora.com)ä¸ä¹æäººé®è¿ä¸ªé®é¢ï¼æçé£ä¸ªåçå¾ç²¾å½©ï¼åä¸ªé¾æ¥ï¼ææ§è¶£ç读ä¸è¯»å§ã[Python (programming language): How does garbage collection in Python work?](http://www.quora.com/Python-programming-language-1/How-does-garbage-collection-in-Python-work)
##iså==çææ
以ä¸è¿ç¨çåçææ¸
æ¥äºï¼ä¸é¢å°±å¯ä»¥æ·±å
¥ä¸æ¥äºã
>>> l1 = [1,2,3]
>>> l2 = l1
è¿ä¸ªæä½ä¸ï¼l1ål2两个åéï¼å¼ç¨çæ¯ä¸ä¸ªå¯¹è±¡ï¼é½æ¯[1,2,3]ãä½ä»¥è§å¾ï¼å¦æéè¿l1æ¥ä¿®æ¹[1,2,3]ï¼l2å¼ç¨å¯¹è±¡ä¹ä¿®æ¹äºï¼é£ä¹å°±è¯å®è¿ä¸ªè§ç¹äºã
>>> l1[0] = 99 #æå¯¹è±¡å为[99,2,3]
>>> l1 #åäº
[99, 2, 3]
>>> l2ã #ççåäºå
[99, 2, 3]
忢ä¸ä¸ªæ¹å¼ï¼
>>> l1 = [1,2,3]
>>> l2 = [1,2,3]
>>> l1[0] = 99
>>> l1
[99, 2, 3]
>>> l2
[1, 2, 3]
l1ål2è²ä¼¼æåäºåæ ·çä¸ä¸ªå¯¹è±¡[1,2,3]ï¼å
¶å®ï¼å¨å
åä¸ï¼è¿æ¯ä¸¤åä¸è¥¿ï¼äºä¸ç¸å
³ãåªæ¯å¨å
容ä¸ä¸æ ·ãå°±å¥½åæ¯æ°´éé¿ç䏿 ·ç两æ¡é±¼ï¼ä¸¤ä¸ªäººé½éå°äºï¼å½ä¸æ¯å䏿¡ãæä»¥ï¼å½éè¿l1ä¿®æ¹å¼ç¨å¯¹è±¡çåï¼l2没æååã
è¿ä¸æ¥è¿è½è¿ä¹æ£éªï¼
>>> l1
[1, 2, 3]
>>> l2
[1, 2, 3]
>>> l1 == l2 #两个ç¸çï¼æ¯æå
容䏿 ·
True
>>> l1 is l2 #is æ¯æ¯è¾ä¸¤ä¸ªå¼ç¨å¯¹è±¡å¨å
åä¸çå°åæ¯ä¸æ¯ä¸æ ·
Falseã #åé¢çæ£éªå·²ç»è¯´æï¼è¿æ¯ä¸¤ä¸ªä¸ä¸
>>> l3 = l1ãã #顺便ççå¦æè¿æ ·ï¼l3ål1åºç¨åä¸ä¸ªå¯¹è±¡
>>> l3
[1, 2, 3]
>>> l3 == l1
True
>>> l3 is l1 #isçç»ææ¯True
True
æäºå¯¹è±¡ï¼æcopy彿°ï¼éè¿è¿ä¸ªå½æ°å¾å°çå¯¹è±¡ï¼æ¯ä¸ä¸ªæ°çè¿æ¯å¼ç¨å°åä¸ä¸ªå¯¹è±¡å¢ï¼çå®ä¹å¯ä»¥åä¸ä¸ç±»ä¼¼ä¸é¢çå®éªï¼å°±æå¾äºãæ¯å¦ï¼
>>> l1
[1, 2, 3]
>>> l2 = l1[:]
>>> l2
[1, 2, 3]
>>> l1[0] = 22
>>> l1
[22, 2, 3]
>>> l2
[1, 2, 3]
>>> adict = {"name":"qiwsir","web":"qiwsir.github.io"}
>>> bdict = adict.copy()
>>> bdict
{'web': 'qiwsir.github.io', 'name': 'qiwsir'}
>>> adict["email"] = "[email protected]"
>>> adict
{'web': 'qiwsir.github.io', 'name': 'qiwsir', 'email': '[email protected]'}
>>> bdict
{'web': 'qiwsir.github.io', 'name': 'qiwsir'}
ä¸è¿ï¼çå®è¿æå°å¿æç¹ï¼python䏿»æç
§åé¢è¯´çæ¹å¼åºçï¼æ¯å¦å°æ°åçæ¶å
>>> x = 2
>>> y = 2
>>> x is y
True
>>> x = 200000
>>> y = 200000
>>> x is y #ä»ä¹éçåï¼å°æ°åçæ¶åï¼å°±ç¨ç¼åä¸ç.
False
>>> x = 'hello'
>>> y = 'hello'
>>> x is y
True
>>> x = "what is you name?"
>>> y = "what is you name?"
>>> x is y #ä¸å
å°çæ°åï¼ççåç¬¦ä¸²ä¹æ¯
False
èµå¼æ¯ä¸æ¯ç®åå°å°±æ¯çå·å¢ï¼ä»ä¸é¢å¾åºæ¥ï¼=çä½ç¨å°±æ¯è®©åéæéæåæä¸ªå¯¹è±¡ãä¸è¿ï¼è¿å¯ä»¥åæ·±å
¥ä¸äºãèµ°çç§å§ã