1.于——InputStream类源码详解
2.详解python2 å python3çåºå«
于——InputStream类源码详解
InputStream类是字节输入流的基础,它作为所有字节输入流类的超类,提供了读取字节的基本功能。
从InputStream读取下一个数据字节时,返回的试戴 源码值位于0到的整数范围内,代表字节值。瀑布流+css+源码若流已到达末尾而无更多字节,会返回值-1。在获取数据、遇到流终点或抛出异常之前,此方法始终处于阻塞状态。
实现InputStream接口的子类通常会根据具体的应用场景,扩展或修改InputStream的码夫源码登录密码基础行为。例如,FileInputStream用于从文件读取字节,而ByteArrayInputStream用于从字节数组读取。
InputStream类提供了基础的晨风发片插件源码读取操作,包括read()方法用于读取单个字节,read(byte[] b)方法用于读取多个字节到字节数组中,以及read(byte[] b, int off, int len)方法用于指定读取字节的位置和数量。这些方法共同构成InputStream类的闪电影视app源码核心功能。
通过使用InputStream类及其子类,开发者可以实现从文件、网络连接、设备输入或其他数据源的字节读取,为数据处理、文件操作和网络通信等提供了基础支持。
在实际应用中,开发者需谨慎处理异常情况,比如文件未找到、网络连接断开或读取操作超时等,并合理使用非阻塞读取机制,以提高程序的性能和响应速度。
总之,InputStream类作为字节输入流的基础,为各种应用场景提供了灵活和高效的数据读取能力。深入理解其内部机制和用法,对于开发高效、可靠的软件系统至关重要。
详解python2 å python3çåºå«
Python2.xä¸3.xçæ¬åºå«Pythonç3.0çæ¬ï¼å¸¸è¢«ç§°ä¸ºPython ï¼æç®ç§°Py3kãç¸å¯¹äºPythonçæ©æçæ¬ï¼è¿æ¯ä¸ä¸ªè¾å¤§çå级ã
为äºä¸å¸¦å ¥è¿å¤çç´¯èµï¼Python 3.0å¨è®¾è®¡çæ¶å没æèèåä¸ç¸å®¹ã
许å¤é对æ©æPythonçæ¬è®¾è®¡çç¨å¼é½æ æ³å¨Python 3.0ä¸æ£å¸¸æ§è¡ã
为äºç §é¡¾ç°æç¨å¼ï¼Python 2.6ä½ä¸ºä¸ä¸ªè¿æ¸¡çæ¬ï¼åºæ¬ä½¿ç¨äºPython 2.xçè¯æ³ååºï¼åæ¶èèäºåPython 3.0çè¿ç§»ï¼å 许使ç¨é¨åPython 3.0çè¯æ³ä¸å½æ°ã
æ°çPythonç¨å¼å»ºè®®ä½¿ç¨Python 3.0çæ¬çè¯æ³ã
é¤éæ§è¡ç¯å¢æ æ³å®è£ Python 3.0æè ç¨å¼æ¬èº«ä½¿ç¨äºä¸æ¯æ´Python 3.0ç第ä¸æ¹åºãç®åä¸æ¯æ´Python 3.0ç第ä¸æ¹åºæTwisted, py2exe, PILçã
大å¤æ°ç¬¬ä¸æ¹åºé½æ£å¨åªåå°ç¸å®¹Python 3.0çæ¬ãå³ä½¿æ æ³ç«å³ä½¿ç¨Python 3.0ï¼ä¹å»ºè®®ç¼åç¸å®¹Python 3.0çæ¬çç¨å¼ï¼ç¶å使ç¨Python 2.6, Python 2.7æ¥æ§è¡ã
Python 3.0çåå主è¦å¨ä»¥ä¸å 个æ¹é¢:
1. print å½æ°
printè¯å¥æ²¡æäºï¼åè代ä¹çæ¯print()å½æ°ã Python 2.6ä¸Python 2.7é¨åå°æ¯æè¿ç§å½¢å¼çprintè¯æ³ãå¨Python 2.6ä¸Python 2.7éé¢ï¼ä»¥ä¸ä¸ç§å½¢å¼æ¯çä»·çï¼
print "fish"print ("fish") #注æprintåé¢æä¸ªç©ºæ ¼
print("fish") #print()ä¸è½å¸¦æä»»ä½å ¶å®åæ°
ç¶èï¼Python 2.6å®é å·²ç»æ¯ææ°çprint()è¯æ³ï¼
from __future__ import print_functionprint("fish", "panda", sep=', ')
2. Unicode
Python 2 æ ASCII str() ç±»åï¼unicode() æ¯åç¬çï¼ä¸æ¯ byte ç±»åã
ç°å¨ï¼ å¨ Python 3ï¼æ们æç»æäº Unicode (utf-8) å符串ï¼ä»¥åä¸ä¸ªåèç±»ï¼byte å bytearraysã
ç±äº Python3.X æºç æ件é»è®¤ä½¿ç¨utf-8ç¼ç ï¼è¿å°±ä½¿å¾ä»¥ä¸ä»£ç æ¯åæ³çï¼
>>> ä¸å½ = 'china'>>>print(ä¸å½)
china
Python 2.x
>>> str = "æç±å京天å®é¨">>> str
'\xe6\x\x\xe7\x\xb1\xe5\x8c\x\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x\xe9\x\xa8'
>>> str = u"æç±å京天å®é¨"
>>> str
u'\u\u\u\u4eac\u\u5b\ue8'
Python 3.x
>>> str = "æç±å京天å®é¨">>> str
'æç±å京天å®é¨'
3. é¤æ³è¿ç®
Pythonä¸çé¤æ³è¾å ¶å®è¯è¨æ¾å¾é常é«ç«¯ï¼æå¥å¾å¤æçè§åãPythonä¸çé¤æ³æ两个è¿ç®ç¬¦ï¼/å//
3.1é¦å æ¥è¯´/é¤æ³:
å¨python 2.xä¸/é¤æ³å°±è·æ们çæç大å¤æ°è¯è¨ï¼æ¯å¦JavaåCåå·®ä¸å¤ï¼æ´æ°ç¸é¤çç»ææ¯ä¸ä¸ªæ´æ°ï¼æå°æ°é¨åå®å ¨å¿½ç¥æï¼æµ®ç¹æ°é¤æ³ä¼ä¿çå°æ°ç¹çé¨åå¾å°ä¸ä¸ªæµ®ç¹æ°çç»æã
å¨python 3.xä¸/é¤æ³ä¸åè¿ä¹åäºï¼å¯¹äºæ´æ°ä¹é´çç¸é¤ï¼ç»æä¹ä¼æ¯æµ®ç¹æ°ã
Python 2.x:
>>> 1 / 20
>>> 1.0 / 2.0
0.5
Python 3.x :
>>> 1/20.5
è对äº//é¤æ³ï¼è¿ç§é¤æ³å«åflooré¤æ³ï¼ä¼å¯¹é¤æ³çç»æèªå¨è¿è¡ä¸ä¸ªflooræä½ï¼å¨python 2.xåpython 3.xä¸æ¯ä¸è´çã
python 2.x :
>>> -1 // 2-1
python 3.x :
>>> -1 // 2-1
注æçæ¯å¹¶ä¸æ¯èå¼å°æ°é¨åï¼èæ¯æ§è¡flooræä½ï¼å¦æè¦æªåå°æ°é¨åï¼é£ä¹éè¦ä½¿ç¨math模åçtruncå½æ°
python 3.x :
>>> import math>>> math.trunc(1 / 2)
0
>>> math.trunc(-1 / 2)
0
4. å¼å¸¸
å¨ Python 3 ä¸å¤çå¼å¸¸ä¹è½»å¾®çæ¹åäºï¼å¨ Python 3 ä¸æ们ç°å¨ä½¿ç¨ as ä½ä¸ºå ³é®è¯ã
æè·å¼å¸¸çè¯æ³ç± except exc, var æ¹ä¸º except exc as varã
使ç¨è¯æ³except (exc1, exc2) as varå¯ä»¥åæ¶æè·å¤ç§ç±»å«çå¼å¸¸ã Python 2.6å·²ç»æ¯æè¿ä¸¤ç§è¯æ³ã
1. å¨2.xæ¶ä»£ï¼ææç±»åç对象é½æ¯å¯ä»¥è¢«ç´æ¥æåºçï¼å¨3.xæ¶ä»£ï¼åªæ继æ¿èªBaseExceptionç对象æå¯ä»¥è¢«æåºã
2. 2.x raiseè¯å¥ä½¿ç¨éå·å°æåºå¯¹è±¡ç±»åååæ°åå¼ï¼3.xåæ¶äºè¿ç§å¥è©çåæ³ï¼ç´æ¥è°ç¨æé å½æ°æåºå¯¹è±¡å³å¯ã
å¨2.xæ¶ä»£ï¼å¼å¸¸å¨ä»£ç ä¸é¤äºè¡¨ç¤ºç¨åºé误ï¼è¿ç»å¸¸åä¸äºæ®éæ§å¶ç»æåºè¯¥åçäºæ ï¼å¨3.xä¸å¯ä»¥çåºï¼è®¾è®¡è 让å¼å¸¸åçæ´å ä¸ä¸ï¼åªæå¨é误åççæ åµæè½å»ç¨å¼å¸¸æè·è¯å¥æ¥å¤çã
5. xrange
å¨ Python 2 ä¸ xrange() å建è¿ä»£å¯¹è±¡çç¨æ³æ¯é常æµè¡çãæ¯å¦ï¼ for 循ç¯æè æ¯å表/éå/åå ¸æ¨å¯¼å¼ã
è¿ä¸ªè¡¨ç°åååçæå¨ï¼æ¯å¦ã"æ°æ§æ±å¼"ï¼ãä½æ¯è¿ä¸ª xrange-iterable æ¯æ ç©·çï¼æå³çä½ å¯ä»¥æ ééåã
ç±äºå®çæ°æ§æ±å¼ï¼å¦æä½ ä¸å¾ä» ä» ä¸éåå®ä¸æ¬¡ï¼xrange() å½æ° æ¯ range() æ´å¿«ï¼æ¯å¦ for 循ç¯ï¼ã尽管å¦æ¤ï¼å¯¹æ¯è¿ä»£ä¸æ¬¡ï¼ä¸å»ºè®®ä½ éå¤è¿ä»£å¤æ¬¡ï¼å 为çæå¨æ¯æ¬¡é½ä»å¤´å¼å§ã
å¨ Python 3 ä¸ï¼range() æ¯å xrange() é£æ ·å®ç°ä»¥è³äºä¸ä¸ªä¸é¨ç xrange() å½æ°é½ä¸ååå¨ï¼å¨ Python 3 ä¸ xrange() ä¼æåºå½åå¼å¸¸ï¼ã
Python 3
import timeitn =
def test_range(n):
return for i in range(n):
pass
def test_xrange(n):
for i in xrange(n):
pass
Python 2
print 'Python', python_version()print '\ntiming range()'
%timeit test_range(n)
print '\n\ntiming xrange()'
%timeit test_xrange(n)
Python 2.7.6
timing range()
loops, best of 3: µs per loop
timing xrange() loops, best of 3: µs per loop
Python 2.7.6
timing range()
loops, best of 3: µs per loop
timing xrange()
loops, best of 3: µs per loop
Python 3
print('Python', python_version())print('\ntiming range()')
%timeit test_range(n)
Python 3.4.1
timing range()
loops, best of 3: µs per loopprint(xrange())
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-5-5d8f9bea> in <module>()
----> 1 print(xrange())
NameError: name 'xrange' is not defined
6. å «è¿å¶åé¢é表示
å «è¿å¶æ°å¿ é¡»åæ0oï¼åæ¥çå½¢å¼ä¸è½ç¨äºï¼äºè¿å¶å¿ é¡»åæ0bã
æ°å¢äºä¸ä¸ªbin()å½æ°ç¨äºå°ä¸ä¸ªæ´æ°è½¬æ¢æäºè¿å¶å串ã Python 2.6å·²ç»æ¯æè¿ä¸¤ç§è¯æ³ã
å¨Python 3.xä¸ï¼è¡¨ç¤ºå «è¿å¶åé¢éçæ¹å¼åªæä¸ç§ï¼å°±æ¯0oã
python 2.x
>>> 0o
>>>
python 3.x>>>File "<stdin>", line 1
^
SyntaxError: invalid token
>>> 0o
7. ä¸çè¿ç®ç¬¦Python 2.xä¸ä¸çäºæ两ç§åæ³ != å <>
Python 3.xä¸å»æäº<>, åªæ!=ä¸ç§åæ³ï¼è¿å¥½ï¼æä»æ¥æ²¡æ使ç¨<>çä¹ æ¯
8. å»æäºrepr表达å¼``
Python 2.x ä¸åå¼å·``ç¸å½äºreprå½æ°çä½ç¨
Python 3.x ä¸å»æäº``è¿ç§åæ³ï¼åªå 许使ç¨reprå½æ°ï¼è¿æ ·åçç®çæ¯ä¸ºäºä½¿ä»£ç çä¸å»æ´æ¸ æ°ä¹ï¼ä¸è¿ææè§ç¨reprçæºä¼å¾å°ï¼ä¸è¬åªå¨debugçæ¶åæç¨ï¼å¤æ°æ¶åè¿æ¯ç¨strå½æ°æ¥ç¨å符串æ述对象ã
def sendMail(from_: str, to: str, title: str, body: str) -> bool:pass
å¤ä¸ªæ¨¡å被æ¹åï¼æ ¹æ®PEP8ï¼
StringIO模åç°å¨è¢«å并å°æ°çio模ç»å ã new, md5, gopherlibç模å被å é¤ã Python 2.6å·²ç»æ¯æ´æ°çio模ç»ã
httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被å并å°httpå å ã
åæ¶äºexecè¯å¥ï¼åªå©ä¸exec()å½æ°ã Python 2.6å·²ç»æ¯æ´exec()å½æ°ã
9. æ°æ®ç±»å
1ï¼Py3.Xå»é¤äºlongç±»åï¼ç°å¨åªæä¸ç§æ´åââintï¼ä½å®çè¡ä¸ºå°±å2.Xçæ¬çlong
2ï¼æ°å¢äºbytesç±»åï¼å¯¹åºäº2.Xçæ¬çå «ä½ä¸²ï¼å®ä¹ä¸ä¸ªbytesåé¢éçæ¹æ³å¦ä¸ï¼
>>> b = b'china'>>> type(b)
<type 'bytes'>
str对象åbytes对象å¯ä»¥ä½¿ç¨.encode() (str -> bytes) or .decode() (bytes -> str)æ¹æ³ç¸äºè½¬åã
>>> s = b.decode()>>> s
'china'
>>> b1 = s.encode()
>>> b1
b'china'
3ï¼dictç.keys()ã.items å.values()æ¹æ³è¿åè¿ä»£å¨ï¼èä¹åçiterkeys()çå½æ°é½è¢«åºå¼ãåæ¶å»æçè¿æ dict.has_key()ï¼ç¨ inæ¿ä»£å®å§ ã