>æä»¥ä½ ä»¬è¦ææ³ç¥ï¼å¥½åèæ ç±çå¿å¥³ä¸æ ·ãä¹è¦åç±å¿è¡äºï¼æ£å¦åºç£ç±æä»¬ï¼ä¸ºæä»¬èäºèªå·±ï¼å½ä½é¦¨é¦çä¾ç©ä¸ç¥ç©ç®ä¸ç¥ãè³äºæ·«ä¹±å¹¶ä¸åæ±¡ç§½ï¼ææ¯è´ªå©ªï¼å¨ä½ 们ä¸é´è¿æé½ä¸å¯ï¼æ¹åå£å¾çä½ç»ã(EPHESIANS 5:1-3) #æ ååº(2) pythonæ ååºå 容é常å¤ï¼æäººä¸é¨ä¸ºæ¤åè¿ä¸æ¬ä¹¦ã卿¬æç¨ä¸ï¼ç±äºæçåå ï¼ä¸ä¼å°æ ååºè¿è¡å®æ´ç详ç»ä»ç»ï¼ä½æ¯ï¼ææ ¹æ®èªå·±ççè§£åå好ï¼éå 个åç°åºæ¥ï¼ä¸æ¥æ¾ç¤ºæ ååºä¹å¼ºå¤§åè½ï¼äºæ¥æ¼ç¤ºå¦ä½çè§£åä½¿ç¨æ ååºã ##sys è¿æ¯ä¸ä¸ªè·pythonè§£éå¨å ³ç³»å¯åçæ ååºï¼ä¸ä¸èä¸æä»¬ä½¿ç¨è¿`sys.path.append()`ã >>> import sys >>> print sys.__doc__ æ¾ç¤ºäºsysçåºæ¬ææ¡£ï¼ç第ä¸å¥è¯ï¼æ¦æ¬äºæ¬æ¨¡åçåºæ¬ç¹ç¹ã This module provides access to some objects used or maintained by the interpreter and to functions that interact strongly with the interpreter. å¨è¯¸å¤sys彿°ååéä¸ï¼éæ©å¸¸ç¨çï¼åºè¯¥è¯´æ¯æè§å¾å¸¸ç¨çï¼æ¥è¯´æã ###sys.argv sys.argvæ¯åéï¼ä¸é¨ç¨æ¥åpythonè§£éå¨ä¼ éåæ°ï¼æä»¥åæ°âå½ä»¤è¡åæ°âã å è§£éä»ä¹æ¯å½ä»¤è¡åæ°ã $ python --version Python 2.7.6 è¿éç`--version`å°±æ¯å½ä»¤è¡åæ°ãå¦æä½ ä½¿ç¨`python --help`å¯ä»¥çå°æ´å¤ï¼ $ python --help usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... Options and arguments (and corresponding environment variables): -B : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x -c cmd : program passed in as string (terminates option list) -d : debug output from parser; also PYTHONDEBUG=x -E : ignore PYTHON* environment variables (such as PYTHONPATH) -h : print this help message and exit (also --help) -i : inspect interactively after running script; forces a prompt even if stdin does not appear to be a terminal; also PYTHONINSPECT=x -m mod : run library module as a script (terminates option list) -O : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x -OO : remove doc-strings in addition to the -O optimizations -R : use a pseudo-random salt to make hash() values of various types be unpredictable between separate invocations of the interpreter, as a defense against denial-of-service attacks åªéæ©äºé¨åå 容æå¨è¿éãæçå°çå¦`-B, -h`乿µï¼é½æ¯åæ°ï¼æ¯å¦`python -h`ï¼å ¶åè½åä¸ãé£ä¹`-h`乿¯å½ä»¤è¡åæ°ã `sys.arg`å¨pythonä¸çä½ç¨å°±æ¯è¿æ ·ãéè¿å®å¯ä»¥åè§£éå¨ä¼ éå½ä»¤è¡åæ°ãæ¯å¦ï¼ #!/usr/bin/env python # coding=utf-8 import sys print "The file name: ", sys.argv[0] print "The number of argument", len(sys.argv) print "The argument is: ", str(sys.argv) å°ä¸è¿°ä»£ç ä¿åï¼æä»¶åæ¯22101.pyï¼è¿åç§°åçï¼å¤ä¹æ°ååï¼ãç¶å妿¤åï¼ $ python 22101.py The file name: 22101.py The number of argument 1 The argument is: ['22101.py'] å°ç»æååé¢ç代ç åä¸ªå¯¹ç §ã - å¨`$ python 22101.py`ä¸ï¼â22101.pyâæ¯è¦è¿è¡çæä»¶åï¼åæ¶ä¹æ¯å½ä»¤è¡åæ°ï¼æ¯åé¢ç`python`è¿ä¸ªæä»¤çåæ°ãå ¶å°ä½ä¸`python -h`ä¸çåæ°`-h`æ¯çåçã - sys.argv[0]æ¯ç¬¬ä¸ä¸ªåæ°ï¼å°±æ¯ä¸é¢æå°ç`22101.py`ï¼å³æä»¶åã 妿æä»¬è¿æ ·æ¥è¯è¯ï¼ççç»æï¼ $ python 22101.py beginner master www.itdiffer.com The file name: 22101.py The number of argument 4 The argument is: ['22101.py', 'beginner', 'master', 'www.itdiffer.com'] 妿å¨è¿éï¼ç¨`sys.arg[1]`å¾å°çå°±æ¯`beginner`ï¼ä¾æ¬¡ç±»æ¨ã ###sys.exit() è¿æ¯ä¸ä¸ªæ¹æ³ï¼æææ¯éåºå½åçç¨åºã Help on built-in function exit in module sys: exit(...) exit([status]) Exit the interpreter by raising SystemExit(status). If the status is omitted or None, it defaults to zero (i.e., success). If the status is an integer, it will be used as the system exit status. If it is another kind of object, it will be printed and the system exit status will be one (i.e., failure). ä»ææ¡£ä¿¡æ¯ä¸å¯ç¥ï¼å¦æç¨`sys.exit()`éåºç¨åºï¼ä¼è¿åSystemExitå¼å¸¸ãè¿éå åç¥è¯»è ï¼è¿æå¦å¤ä¸éåºæ¹å¼ï¼æ¯`os._exit()`ï¼è¿ä¸¤ä¸ªææåºå«ãåè ä¼å¨åé¢ä»ç»ã #!/usr/bin/env python # coding=utf-8 import sys for i in range(10): if i == 5: sys.exit() else: print i è¿æ®µç¨åºçè¿è¡ç»æå°±æ¯ï¼ $ python 22102.py 0 1 2 3 4 éè¦æéè¯»è æ³¨æçæ¯ï¼å¨å½æ°ä¸ï¼ç¨å°returnï¼è¿ä¸ªçå«ä¹æ¯ç»æ¢å½åç彿°ï¼å¹¶è¿åç¸åºå¼ï¼å¦ææï¼å¦ææ²¡æå°±æ¯Noneï¼ã使¯sys.exit()çå«ä¹æ¯éåºå½åç¨åºï¼å¹¶åèµ·SystemExitå¼å¸¸ãè¿å°±æ¯ä¸¤è çåºå«äºã å¦æä½¿ç¨`sys.exit(0)`表示æ£å¸¸éåºãå¦æè¯»è è¦æµè¯ï¼éè¦å¨æä¸ªå°æ¹éåºçæ¶åæä¸ä¸ªææä¹çæç¤ºï¼å¯ä»¥ç¨`sys.exit("I wet out at here.")`ï¼é£ä¹å符串信æ¯å°±è¢«æå°åºæ¥ã ###sys.path `sys.path`å·²ç»ä¸éçäºï¼åé¢ç¨è¿ãå®å¯ä»¥æ¥æ¾æ¨¡åæå¨çç®å½ï¼ä»¥å表ç形弿¾ç¤ºåºæ¥ã妿ç¨`append()`æ¹æ³ï¼å°±è½å¤åè¿ä¸ªå表å¢å æ°ç模åç®å½ãå¦åææ¼ç¤ºãä¸å¨èµè¿°ãä¸çè§£ç读è å¯ä»¥å¾åå¤ä¹ ã ###sys.stdin, sys.stdout, sys.stderr è¿ä¸ä¸ªæ¾å°ä¸èµ·ï¼å 为ä»ä»¬çåé齿¯ç±»æä»¶æµå¯¹è±¡ï¼åå«è¡¨ç¤ºæ åUNIXæ¦å¿µä¸çæ åè¾å ¥ãæ åè¾åºåæ åé误ãä¸pythonåè½å¯¹ç §ï¼sys.stdinè·å¾è¾å ¥ï¼ç¨raw_input()è¾å ¥çéè¿å®è·å¾ï¼python3.x䏿¯imput()ï¼ï¼sys.stdoutè´è´£è¾åºäºã >æµæ¯ç¨åºè¾å ¥æè¾åºçä¸ä¸ªè¿ç»çåèåºåï¼è®¾å¤(ä¾å¦é¼ æ ãé®çãç£çãå±å¹ãè°å¶è§£è°å¨åæå°æº)çè¾å ¥åè¾åºé½æ¯ç¨æµæ¥å¤ççãç¨åºå¨ä»»ä½æ¶åé½å¯ä»¥ä½¿ç¨å®ä»¬ãä¸è¬æ¥è®²ï¼stdinï¼è¾å ¥ï¼å¹¶ä¸ä¸å®æ¥èªé®çï¼stdoutï¼è¾åºï¼ä¹å¹¶ä¸ä¸å®æ¾ç¤ºå¨å±å¹ä¸ï¼å®ä»¬é½å¯ä»¥éå®åå°ç£çæä»¶æå ¶å®è®¾å¤ä¸ã è¿è®°å¾`print()`å§ï¼å¨è¿ä¸ªå¦ä¹ è¿ç¨ä¸ï¼ç¨çå¾å¤ãå®çæ¬è´¨å°±æ¯`sys.stdout.write(object + '\n')`ã >>> for i in range(3): ... print i ... 0 1 2 >>> import sys >>> for i in range(3): ... sys.stdout.write(str(i)) ... 012>>> é æä¸é¢è¾åºç»æå¨è¡¨è±¡ä¸å¦æ¤å·®å¼ï¼åå å°±æ¯é£ä¸ª`'\n'`çææ ã >>> for i in range(3): ... sys.stdout.write(str(i) + '\n') ... 0 1 2 ä»è¿çåºï¼ä¸¤è æ¯å®å ¨çæçãå¦æä» ä» æ¢äºæ¤ï¼æä¹ä¸å¤§ãå ³é®æ¯éè¿sys.stdoutè½å¤åå°å°è¾åºå 容ä»âæ§å¶å°â转å°âæä»¶âï¼ç§°ä¹ä¸ºéå®åãè¿æ ·ä¹è®¸æ§å¶å°çä¸å°ï¼å¾å¤æ¶åè¿ä¸ªä¸éè¦ï¼ï¼ä½æ¯æä»¶ä¸å·²ç»æäºè¾åºå å®¹ãæ¯å¦ï¼ >>> f = open("stdout.md", "w") >>> sys.stdout = f >>> print "Learn Python: From Beginner to Master" >>> f.close() å½`sys.stdout = f`ä¹åï¼å°±æå³çå°è¾åºç®çå°è½¬å°äºæå¼ï¼å»ºç«ï¼çæä»¶ä¸ï¼å¦æä½¿ç¨print()ï¼å³å°å 容è¾åºå°è¿ä¸ªæä»¶ä¸ï¼å¨æ§å¶å°å¹¶æ æ¾ç°ã æå¼æä»¶çç便ç¥ï¼ $ cat stdout.md Learn Python: From Beginner to Master è¿æ¯æ åè¾åºãå¦å¤ä¸¤ä¸ªï¼è¾å ¥åé误ï¼ä¹ç±»ä¼¼ã读è å¯ä»¥èªè¡æµè¯ã å ³äºå¯¹æä»¶çæä½ï¼è½ç¶åé¢è¿è¿é齿¶åå°ä¸äºã使¯ï¼è¿è¿ä¸è¶³ï¼å颿ä¼ä¸é¨è®²æå¯¹æäºç¹æ®ä½å¸¸ç¨çæä»¶è¯»åæä½ã ##copy å¨[ãåå ¸(2)ã](./117.md)䏿¾ç»å¯¹copyåäºè®²æï¼è¿é忬¡æåºï¼å³æ¯å¤ä¹ ï¼åæ¯åæ°ï¼ä»¥æ¾å¾æèèå°äºè¿ä¸ªå¸¸ç¨æ¨¡åï¼è¿æï¼ >>> import copy >>> copy.__all__ ['Error', 'copy', 'deepcopy'] è¿ä¸ªæ¨¡åä¸å¸¸ç¨çå°±æ¯copyådeepcopyã 为äºå ·ä½è¯´æï¼çè¿æ ·ä¸ä¸ªä¾åï¼ #!/usr/bin/env python # coding=utf-8 import copy class MyCopy(object): def __init__(self, value): self.value = value def __repr__(self): return str(self.value) foo = MyCopy(7) a = ["foo", foo] b = a[:] c = list(a) d = copy.copy(a) e = copy.deepcopy(a) a.append("abc") foo.value = 17 print "original: %r\n slice: %r\n list(): %r\n copy(): %r\n deepcopy(): %r\n" % (a,b,c,d,e) ä¿åå¹¶è¿è¡ï¼ $ python 22103.py original: ['foo', 17, 'abc'] slice: ['foo', 17] list(): ['foo', 17] copy(): ['foo', 17] deepcopy(): ['foo', 7] 读è å¯ä»¥å¯¹ç §ç»æåç¨åºï¼å°±è½çè§£åç§æ·è´çå®ç°æ¹æ³åå«ä¹äºã ------ [æ»ç®å½](./index.md) | [ä¸èï¼æ ååº(1)](./220.md) | [ä¸èï¼æ ååº(3)](./222.md) å¦æä½ è®¤ä¸ºæå¿ è¦æèµæï¼è¯·éè¿æ¯ä»å®ï¼**[email protected]**,ä¸èææ¿ã