python學(xué)習(xí)日記-2016.7.26

1.datetime

datetime是Python處理日期和時間的標(biāo)準(zhǔn)庫树灶。它的用法如下:
a.獲取當(dāng)前時間

>>> from datetime import datetime
>>> now = datetime.now() # 獲取當(dāng)前datetime
>>> print(now)

b.獲取指定時間和日期

>>> from datetime import datetime
>>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期時間創(chuàng)建datetime
>>> print(dt)

c.datetime轉(zhuǎn)換為timestamp
在計算機(jī)中逢慌,時間實(shí)際上是用數(shù)字表示的。我們把1970年1月1日 00:00:00 UTC+00:00時區(qū)的時刻稱為epoch time,記為0
(1970年以前的時間timestamp為負(fù)數(shù))蔫耽,當(dāng)前時間就是相對于epoch time的秒數(shù),稱為timestamp。timestamp的值與時區(qū)毫無關(guān)系幔欧,因為timestamp一旦確定峻凫,其UTC時間就確定了诞挨,轉(zhuǎn)換到任意時區(qū)的時間也是完全確定的,這就是為什么計算機(jī)存儲的當(dāng)前時間是以timestamp表示的设拟,因為全球各地的計算機(jī)在任意時刻的timestamp都是完全相同的(假定時間已校準(zhǔn))雁社。

>>> from datetime import datetime
>>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期時間創(chuàng)建datetime
>>> dt.timestamp()

d.timestamp轉(zhuǎn)換為datetime

>>> from datetime import datetime
>>> t = 1429417200.0
>>> print(datetime.fromtimestamp(t))
>>> print(datetime.utcfromtimestamp(t)) # UTC時間

e.str轉(zhuǎn)換為datetime

>>> from datetime import datetime
>>> cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
>>> print(cday)

f.datetime轉(zhuǎn)換為str

>>> from datetime import datetime
>>> now = datetime.now()
>>> print(now.strftime('%a, %b %d %H:%M'))
Mon, May 05 16:28

g.時區(qū)轉(zhuǎn)換

# 拿到UTC時間浴井,并強(qiáng)制設(shè)置時區(qū)為UTC+0:00:
>>> utc_dt = datetime.utcnow().replace(tzinfo=timezone.utc)
>>> print(utc_dt)
2015-05-18 09:05:12.377316+00:00# astimezone()
將轉(zhuǎn)換時區(qū)為北京時間:
>>> bj_dt = utc_dt.astimezone(timezone(timedelta(hours=8)))
>>> print(bj_dt)
2015-05-18 17:05:12.377316+08:00# astimezone()
將轉(zhuǎn)換時區(qū)為東京時間:
>>> tokyo_dt = utc_dt.astimezone(timezone(timedelta(hours=9)))
>>> print(tokyo_dt)
2015-05-18 18:05:12.377316+09:00# astimezone()
將bj_dt轉(zhuǎn)換時區(qū)為東京時間:
>>> tokyo_dt2 = bj_dt.astimezone(timezone(timedelta(hours=9)))
>>> print(tokyo_dt2)
2015-05-18 18:05:12.377316+09:00

2namedtuple

namedtuple是一個函數(shù),它用來創(chuàng)建一個自定義的tuple對象霉撵,并且規(guī)定了tuple元素的個數(shù)磺浙,并可以用屬性而不是索引來引用tuple的某個元素。

這樣一來徒坡,我們用namedtuple可以很方便地定義一種數(shù)據(jù)類型撕氧,它具備tuple的不變性,又可以根據(jù)屬性來引用喇完,使用十分方便伦泥。

>>> from collections import namedtuple
>>> Point = namedtuple('Point', ['x', 'y'])
>>> p = Point(1, 2)
>>> p.x1
>>> p.y2

3.deque

使用list存儲數(shù)據(jù)時,按索引訪問元素很快,但是插入和刪除元素就很慢了奄喂,因為list是線性存儲铐殃,數(shù)據(jù)量大的時候,插入和刪除效率很低跨新。

deque是為了高效實(shí)現(xiàn)插入和刪除操作的雙向列表富腊,適合用于隊列和棧:

>>> from collections import deque
>>> q = deque(['a', 'b', 'c'])
>>> q.append('x')
>>> q.appendleft('y')
>>> q
deque(['y', 'a', 'b', 'c', 'x'])

4.defaultdict

使用dict時,如果引用的Key不存在域帐,就會拋出KeyError赘被。如果希望key不存在時,返回一個默認(rèn)值肖揣,就可以用defaultdict:

>>> from collections import defaultdict
>>> dd = defaultdict(lambda: 'N/A')
>>> dd['key1'] = 'abc'
>>> dd['key1'] # key1存在
'abc'
>>> dd['key2'] # key2不存在民假,返回默認(rèn)值
'N/A'

注意默認(rèn)值是調(diào)用函數(shù)返回的,而函數(shù)在創(chuàng)建defaultdict對象時傳入龙优。
除了在Key不存在時返回默認(rèn)值羊异,defaultdict的其他行為跟dict是完全一樣的。

5.OrderedDict

使用dict時彤断,Key是無序的野舶。在對dict做迭代時,我們無法確定Key的順序宰衙。如果要保持Key的順序平道,可以用OrderedDict:

>>> from collections import OrderedDict
>>> d = dict([('a', 1), ('b', 2), ('c', 3)])
>>> d # dict的Key是無序的
{'a': 1, 'c': 3, 'b': 2}
>>> od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
>>> od # OrderedDict的Key是有序的
OrderedDict([('a', 1), ('b', 2), ('c', 3)])

6.Counter

Counter是一個簡單的計數(shù)器,例如供炼,統(tǒng)計字符出現(xiàn)的個數(shù):

>>> from collections import Counter
>>> c = Counter()
>>> for ch in 'programming':
...  c[ch] = c[ch] + 1...
>>> c
Counter({'g': 2, 'm': 2, 'r': 2, 'a': 1, 'i': 1, 'o': 1, 'n': 1, 'p': 1})

Counter實(shí)際上也是dict的一個子類一屋,上面的結(jié)果可以看出,字符'g'袋哼、'm'冀墨、'r'各出現(xiàn)了兩次,其他字符各出現(xiàn)了一次先嬉。

7.base64

Base64是一種用64個字符來表示任意二進(jìn)制數(shù)據(jù)的方法轧苫。

用記事本打開exe、jpg疫蔓、pdf這些文件時含懊,我們都會看到一大堆亂碼,因為二進(jìn)制文件包含很多無法顯示和打印的字符衅胀,所以岔乔,如果要讓記事本這樣的文本處理軟件能處理二進(jìn)制數(shù)據(jù),就需要一個二進(jìn)制到字符串的轉(zhuǎn)換方法滚躯。Base64是一種最常見的二進(jìn)制編碼方法雏门。
Base64編碼會把3字節(jié)的二進(jìn)制數(shù)據(jù)編碼為4字節(jié)的文本數(shù)據(jù)嘿歌,長度增加33%,好處是編碼后的文本數(shù)據(jù)可以在郵件正文茁影、網(wǎng)頁等直接顯示宙帝。

如果要編碼的二進(jìn)制數(shù)據(jù)不是3的倍數(shù),最后會剩下1個或2個字節(jié)怎么辦募闲?Base64用\x00字節(jié)在末尾補(bǔ)足后步脓,再在編碼的末尾加上1個或2個=號,表示補(bǔ)了多少字節(jié)浩螺,解碼的時候靴患,會自動去掉。

Python內(nèi)置的base64可以直接進(jìn)行base64的編解碼:

>>> import base64
>>> base64.b64encode(b'binary\x00string')
b'YmluYXJ5AHN0cmluZw=='
>>> base64.b64decode(b'YmluYXJ5AHN0cmluZw==')
b'binary\x00string'

由于標(biāo)準(zhǔn)的Base64編碼后可能出現(xiàn)字符+和/要出,在URL中就不能直接作為參數(shù)鸳君,所以又有一種"url safe"的base64編碼,其實(shí)就是把字符+和/分別變成-和_:

>>> base64.b64encode(b'i\xb7\x1d\xfb\xef\xff')
b'abcd++//'
>>> base64.urlsafe_b64encode(b'i\xb7\x1d\xfb\xef\xff')
b'abcd--__'
>>> base64.urlsafe_b64decode('abcd--__')
b'i\xb7\x1d\xfb\xef\xff'

8.struct

Python提供了一個struct模塊來解決bytes和其他二進(jìn)制數(shù)據(jù)類型的轉(zhuǎn)換患蹂。
struct的pack函數(shù)把任意數(shù)據(jù)類型變成bytes:

>>> import struct
>>> struct.pack('>I', 10240099)
b'\x00\x9c@c'

pack的第一個參數(shù)是處理指令或颊,'>I'的意思是:
>表示字節(jié)順序是big-endian,也就是網(wǎng)絡(luò)序况脆,I表示4字節(jié)無符號整數(shù)饭宾。后面的參數(shù)個數(shù)要和處理指令一致批糟。
unpack把bytes變成相應(yīng)的數(shù)據(jù)類型:

>>> struct.unpack('>IH', b'\xf0\xf0\xf0\xf0\x80\x80')
(4042322160, 32896)

根據(jù)>IH的說明格了,后面的bytes依次變?yōu)镮:4字節(jié)無符號整數(shù)和H:2字節(jié)無符號整數(shù)。

9.hashlib

Python的hashlib提供了常見的摘要算法徽鼎,如MD5盛末,SHA1等等。

什么是摘要算法呢否淤?摘要算法又稱哈希算法悄但、散列算法。它通過一個函數(shù)石抡,把任意長度的數(shù)據(jù)轉(zhuǎn)換為一個長度固定的數(shù)據(jù)串(通常用16進(jìn)制的字符串表示)檐嚣。

import hashlib
md5 = hashlib.md5()
md5.update('how to use md5 in python hashlib?'.encode('utf-8'))
print(md5.hexdigest())

MD5是最常見的摘要算法,速度很快啰扛,生成結(jié)果是固定的128 bit字節(jié)嚎京,通常用一個32位的16進(jìn)制字符串表示。
另一種常見的摘要算法是SHA1隐解,調(diào)用SHA1和調(diào)用MD5完全類似:

import hashlib
sha1 = hashlib.sha1()
sha1.update('how to use sha1 in '.encode('utf-8'))
sha1.update('python hashlib?'.encode('utf-8'))
print(sha1.hexdigest())

SHA1的結(jié)果是160 bit字節(jié)鞍帝,通常用一個40位的16進(jìn)制字符串表示。
比SHA1更安全的算法是SHA256和SHA512煞茫,不過越安全的算法不僅越慢帕涌,而且摘要長度更長摄凡。

10.itertools

Python的內(nèi)建模塊itertools提供了非常有用的用于操作迭代對象的函數(shù)
a.count函數(shù)

>>> import itertools
>>> natuals = itertools.count(1)
>>> for n in natuals:
...  print(n)
...
   1
   2
   3
...

b.cycle函數(shù)

>>> import itertools
>>> cs = itertools.cycle('ABC') # 注意字符串也是序列的一種
>>> for c in cs:...  print(c)
...
'A'
'B'
'C'
'A'
'B'
'C'
...

c.repeat函數(shù)

>> ns = itertools.repeat('A', 3)
>>> for n in ns:
...  print(n)
...
A
A
A

無限序列雖然可以無限迭代下去,但是通常我們會通過takewhile()等函數(shù)根據(jù)條件判斷來截取出一個有限的序列:

>>> natuals = itertools.count(1)
>>> ns = itertools.takewhile(lambda x: x <= 10, natuals)
>>> list(ns)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

itertools提供的幾個迭代器操作函數(shù)更加有用:
d.chain()函數(shù)
chain()可以把一組迭代對象串聯(lián)起來蚓曼,形成一個更大的迭代器:

>>> for c in itertools.chain('ABC', 'XYZ')
...  print(c)
# 迭代效果:
'A' 'B' 'C' 'X' 'Y' 'Z'

e.groupby()函數(shù)
groupby()把迭代器中相鄰的重復(fù)元素挑出來放在一起:

>>> for key, group in itertools.groupby('AAABBBCCAAA'):
...  print(key, list(group))
...A ['A', 'A', 'A']
B ['B', 'B', 'B']
C ['C', 'C']
A ['A', 'A', 'A']

實(shí)際上挑選規(guī)則是通過函數(shù)完成的亲澡,只要作用于函數(shù)的兩個元素返回的值相等,這兩個元素就被認(rèn)為是在一組的纫版,而函數(shù)返回值作為組的key谷扣。如果我們要忽略大小寫分組,就可以讓元素'A'和'a'都返回相同的key:

>>> for key, group in itertools.groupby('AaaBBbcCAAa', lambda c: c.upper()):
...  print(key, list(group))
...
A ['A', 'a', 'a']
B ['B', 'B', 'b']
C ['c', 'C']
A ['A', 'A', 'a']

11.xml

DOM vs SAX
操作XML有兩種方法:DOM和SAX捎琐。DOM會把整個XML讀入內(nèi)存会涎,解析為樹,因此占用內(nèi)存大瑞凑,解析慢末秃,優(yōu)點(diǎn)是可以任意遍歷樹的節(jié)點(diǎn)。SAX是流模式籽御,邊讀邊解析练慕,占用內(nèi)存小,解析快技掏,缺點(diǎn)是我們需要自己處理事件铃将。
正常情況下,優(yōu)先考慮SAX哑梳,因為DOM實(shí)在太占內(nèi)存劲阎。
在Python中使用SAX解析XML非常簡潔,通常我們關(guān)心的事件是start_element鸠真,end_element和char_data悯仙,準(zhǔn)備好這3個函數(shù),然后就可以解析xml了吠卷。
舉個例子锡垄,當(dāng)SAX解析器讀到一個節(jié)點(diǎn)時:
<a href="/">python</a>
會產(chǎn)生3個事件:
1.start_element事件,在讀取<a href="/">時祭隔;

2.char_data事件货岭,在讀取python時;

3.end_element事件疾渴,在讀取</a>時千贯。

from xml.parsers.expat import ParserCreate
class DefaultSaxHandler(object): 
  def start_element(self, name, attrs): 
    print('sax:start_element: %s, attrs: %s' % (name, str(attrs))) 

  def end_element(self, name): 
    print('sax:end_element: %s' % name) 
  
  def char_data(self, text): 
    print('sax:char_data: %s' % text)

xml = r'''<?xml version="1.0"?>
<ol> 
  <li><a href="/python">Python</a></li>
  <li><a href="/ruby">Ruby</a></li>
</ol>'''

handler = DefaultSaxHandler()
parser = ParserCreate()
parser.StartElementHandler = handler.start_element
parser.EndElementHandler = handler.end_element
parser.CharacterDataHandler = handler.char_data
parser.Parse(xml)

12.HTMLParser

Python提供了HTMLParser來非常方便地解析HTML,只需簡單幾行代碼:

from html.parser import HTMLParser
from html.entities import name2codepoint
class MyHTMLParser(HTMLParser): 
  def handle_starttag(self, tag, attrs): 
    print('<%s>' % tag) 
  def handle_endtag(self, tag): 
    print('</%s>' % tag) 
  def handle_startendtag(self, tag, attrs): 
    print('<%s/>' % tag) 
  def handle_data(self, data): 
    print(data) 
  def handle_comment(self, data): 
    print('<!--', data, '-->') 
  def handle_entityref(self, name): 
    print('&%s;' % name) 
  def handle_charref(self, name): 
    print('&#%s;' % name)

parser = MyHTMLParser()
parser.feed('''<html>
<head></head>
<body>
<!-- test html parser --> 
<p>Some <a href=\"#\">html</a> HTML&nbsp;tutorial...<br>END</p>
</body>
</html>''')

feed()方法可以多次調(diào)用程奠,也就是不一定一次把整個HTML字符串都塞進(jìn)去丈牢,可以一部分一部分塞進(jìn)去。特殊字符有兩種瞄沙,一種是英文表示的?己沛,一種是數(shù)字表示的?慌核,這兩種字符都可以通過Parser解析出來。

13.urllib

urllib提供了一系列用于操作URL的功能申尼。
a.Get方法
urllib的request模塊可以非常方便地抓取URL內(nèi)容垮卓,也就是發(fā)送一個GET請求到指定的頁面,然后返回HTTP的響應(yīng):
例如师幕,對豆瓣的一個URLhttps://api.douban.com/v2/book/2129650
進(jìn)行抓取粟按,并返回響應(yīng):

from urllib import request
with request.urlopen('https://api.douban.com/v2/book/2129650') as f: 
  data = f.read() 
  print('Status:', f.status, f.reason) 
  for k, v in f.getheaders(): 
    print('%s: %s' % (k, v)) 
  print('Data:', data.decode('utf-8'))

可以看到HTTP響應(yīng)的頭和JSON數(shù)據(jù):

Status: 200 OK
Server: nginx
Date: Tue, 26 May 2015 10:02:27 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 2049
Connection: close
Expires: Sun, 1 Jan 2006 01:00:00 GMT
Pragma: no-cache
Cache-Control: must-revalidate, no-cache, private
X-DAE-Node: pidl1
Data: {"rating":{"max":10,"numRaters":16,"average":"7.4","min":0},"subtitle":"","author":["廖雪峰編著"],"pubdate":"2007-6","tags":[{"count":20,"name":"spring","title":"spring"}...}

如果我們要想模擬瀏覽器發(fā)送GET請求,就需要使用Request對象霹粥,通過往Request對象添加HTTP頭灭将,我們就可以把請求偽裝成瀏覽器。例如后控,模擬iPhone 6去請求豆瓣首頁:

from urllib import request
req = request.Request('http://www.douban.com/')
req.add_header('User-Agent', 'Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25')
with request.urlopen(req) as f:
   print('Status:', f.status, f.reason) 
   for k, v in f.getheaders(): 
    print('%s: %s' % (k, v)) 
  print('Data:', f.read().decode('utf-8'))

這樣豆瓣會返回適合iPhone的移動版網(wǎng)頁:

... <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"> 
<meta name="format-detection" content="telephone=no">
 <link rel="apple-touch-icon" sizes="57x57"  />...

b.Post方法
如果要以POST發(fā)送一個請求庙曙,只需要把參數(shù)data以bytes形式傳入。
我們模擬一個微博登錄浩淘,先讀取登錄的郵箱和口令捌朴,然后按照weibo.cn的登錄頁的格式以username=xxx&password=xxx的編碼傳入:

from urllib import request, parse
print('Login to weibo.cn...')
email = input('Email: ')
passwd = input('Password: ')
login_data = parse.urlencode([ ('username', email), ('password', passwd), ('entry', 'mweibo'), ('client_id', ''), ('savestate', '1'), ('ec', ''), ('pagerefer', 'https://passport.weibo.cn/signin/welcome?entry=mweibo&r=http%3A%2F%2Fm.weibo.cn%2F')])
req = request.Request('https://passport.weibo.cn/sso/login')
req.add_header('Origin', 'https://passport.weibo.cn')
req.add_header('User-Agent', 'Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25')
req.add_header('Referer', 'https://passport.weibo.cn/signin/login?entry=mweibo&res=wel&wm=3349&r=http%3A%2F%2Fm.weibo.cn%2F')
with request.urlopen(req, data=login_data.encode('utf-8')) as f: 
  print('Status:', f.status, f.reason) 
  for k, v in f.getheaders(): 
    print('%s: %s' % (k, v)) 
  print('Data:', f.read().decode('utf-8'))

如果登錄成功,我們獲得的響應(yīng)如下:

Status: 200 OK
Server: nginx/1.2.0
...
Set-Cookie: SSOLoginState=1432620126; path=/; domain=weibo.cn
...
Data: {"retcode":20000000,"msg":"","data":{...,"uid":"1658384301"}}

如果登錄失敗张抄,我們獲得的響應(yīng)如下:

...
Data: {"retcode":50011015,"msg":"\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef","data":{"username":"example@python.org","errline":536}}

14.PIL

參考:
PIL--廖雪峰的官方教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末砂蔽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子署惯,更是在濱河造成了極大的恐慌左驾,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泽台,死亡現(xiàn)場離奇詭異什荣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)怀酷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嗜闻,“玉大人蜕依,你說我怎么就攤上這事×瘀ǎ” “怎么了样眠?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長翠肘。 經(jīng)常有香客問我檐束,道長,這世上最難降的妖魔是什么束倍? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任被丧,我火速辦了婚禮盟戏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘甥桂。我一直安慰自己柿究,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布黄选。 她就那樣靜靜地躺著蝇摸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪办陷。 梳的紋絲不亂的頭發(fā)上貌夕,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機(jī)與錄音民镜,去河邊找鬼蜂嗽。 笑死,一個胖子當(dāng)著我的面吹牛殃恒,可吹牛的內(nèi)容都是我干的植旧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼离唐,長吁一口氣:“原來是場噩夢啊……” “哼病附!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起亥鬓,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤完沪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嵌戈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體覆积,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年熟呛,在試婚紗的時候發(fā)現(xiàn)自己被綠了宽档。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡庵朝,死狀恐怖吗冤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情九府,我是刑警寧澤椎瘟,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站侄旬,受9級特大地震影響肺蔚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜儡羔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一宣羊、第九天 我趴在偏房一處隱蔽的房頂上張望璧诵。 院中可真熱鬧,春花似錦段只、人聲如沸腮猖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澈缺。三九已至,卻和暖如春炕婶,著一層夾襖步出監(jiān)牢的瞬間姐赡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工柠掂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留项滑,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓涯贞,卻偏偏與公主長得像枪狂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宋渔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容

  • python學(xué)習(xí)筆記 聲明:學(xué)習(xí)筆記主要是根據(jù)廖雪峰官方網(wǎng)站python學(xué)習(xí)學(xué)習(xí)的州疾,另外根據(jù)自己平時的積累進(jìn)行修正...
    renyangfar閱讀 3,040評論 0 10
  • datetime —— 處理日期和時間 獲取當(dāng)前日期和時間 獲取指定日期和時間 datetime轉(zhuǎn)換為timest...
    WesleyLien閱讀 375評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)皇拣,斷路器严蓖,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • 風(fēng)格的
    你爹我也是很辛苦閱讀 207評論 0 0
  • 走向共和:不任人唯親,難道任人為疏氧急,處處和我作對不成颗胡。 大學(xué)政治老師:國家倡導(dǎo)什么,說明我們正缺什么吩坝,國家倡導(dǎo)我們...
    子漠閱讀 184評論 0 0