真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python內(nèi)置函數(shù)和序列化-創(chuàng)新互聯(lián)

修改字符集

全局修改

點(diǎn)擊window

10年積累的成都做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有原陽(yáng)免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

針對(duì)某一個(gè)工程

右鍵,有一個(gè)屬性propertes

給某個(gè)文件,也就是前面加

也是右鍵屬性,這里就不在說(shuō)了
#模塊的和模塊的常用方法

  • 至關(guān)重要的__init__.py
    如果想導(dǎo)入成模塊,一定要有這個(gè)文件
  • 是否為主文件__name
    if
    name == '\main__'
    如果不是主文件返回模塊文件路徑+文件名
  • 當(dāng)前文件 :__doc__
    返回模塊級(jí)別的注釋,函數(shù)級(jí)別的注釋,是在函數(shù)下面加6個(gè)引號(hào),中間寫(xiě)注釋
  • __file__:輸出當(dāng)前的路徑

    函數(shù)式編程

  • 參數(shù) def Fun(arg,*args,**kergs)
  • 默認(rèn)參數(shù) print arg
  • 可變參數(shù) print *args print **kergs
    一個(gè)是列表,一個(gè)是字典
  • 返回值 return ‘success’
    #!/usr/bin/env python
    #coding:utf-8
    def login(username):
    if username == "alex":
        print "登錄成功"
    else:
        print "登錄失敗"
    if __name__ == "__main__":
    user = raw_input('username:')
    login(user)

    yield

print range(10)
for item in xrange(10):
    print item
    #輸出的時(shí)候并沒(méi)有全部創(chuàng)建,他只是一個(gè)生成器,說(shuō)明他沒(méi)有寫(xiě)入內(nèi)存中
    #也就是說(shuō)每一次創(chuàng)建就只創(chuàng)建一個(gè)整數(shù)
def foo():
    yield 1
re = foo()
print re
輸出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0
1
2
3
4
5
6
7
8
9
def fool():
    yield 1
    yield 2
    yield 3
yield 4  
#他的執(zhí)行過(guò)程是,第一從從yield 1 執(zhí)行,下一次直接從yield2開(kāi)始執(zhí)行 
re = fool()
print re
#生成了一個(gè)生成器,每次遍歷只生成一條
for item in re :
print item
結(jié)果:

1
2
3
4
def ReadLines():
    seek = 0
   while True:
       with open('E:/temp.txt','r') as f :
            f.seek(seek)
            date = f.readline()
            if date:
                seek = f.tell()
                yield date
            else:
                return 
print ReadLines()
for item in ReadLines():
    print item

三元運(yùn)算和lambda表達(dá)式

三元運(yùn)算

  • 代碼實(shí)例:
    result = ‘gt’ if 1>3 else ‘it’
    print result
  • Lambda表達(dá)式()
    代碼實(shí)例:
    a = lambda x,y: x+y
    print a(1,2)
  • map函數(shù)()
    map (lambda x:x*2,range(10))
    意思就是將range的每個(gè)值賦給前邊

    內(nèi)置函數(shù)

  • dir()列出當(dāng)前文件內(nèi)置的變量或者方法名,只列出key
  • vars()和dir()不一樣的是列出key和value
  • type() 查看你所創(chuàng)建變量的類型
    a = [] ,本質(zhì)上是調(diào)用一個(gè)類,去生成一個(gè)列表,本質(zhì)上是創(chuàng)建了一個(gè)類的實(shí)例,像tuple就是一個(gè)類的名字
  • from file import demo
  • reload(demo)
    重新導(dǎo)入
  • id()
    查看變量的數(shù)據(jù)
  • cmp()函數(shù)
    cmp(x,y) 函數(shù)用于比較 2 個(gè)對(duì)象,如果 x< y 返回 -1,如果 x==y 返回 0,如果 x>y 返回 1。
  • abs()取絕對(duì)值
  • bool()將結(jié)果換算成布爾值
  • divmod()
    計(jì)算結(jié)果,將商和余數(shù)一元組的方式返回
  • max([]) 大值
  • min([]) 最小值
  • sum([]) 求和
  • pow() 指數(shù)運(yùn)算
  • len() 計(jì)算長(zhǎng)度(如果是中文則表示字節(jié)的長(zhǎng)度)
  • all(可迭代的對(duì)象) 可迭代對(duì)象所有的都為真,則返回Ture,否則返回False
  • any(可迭代的對(duì)象) 有一個(gè)為真則返回Ture
  • chr(65) 查看字符
  • ord(‘a(chǎn)’) 查看ascall值
  • hex() 16進(jìn)制
  • bin() 10進(jìn)制
  • oct() 8進(jìn)制
  • range()
  • xrange()
  • enumerate(
    for k,v in enumerate([1,2,3,4]):
    print k,v
    輸出:
    0 1
    1 2
    2 3
    3 4
    #為程序增加一個(gè)序號(hào)
    li = ['手表','汽車','房']
    for item in enumerate(li,1):
    print item[0],item[1]
    #1為初始值
    1 手表
    2 汽車
    3 房
  • apply執(zhí)行函數(shù)和函數(shù)的調(diào)用
    def say():
    print 'say in'
    apply(say)
    輸出 ;say in
  • map函數(shù)() #遍歷后面每一個(gè)序列的函數(shù)
    map (lambda x:x*2,range(10))
    意思就是將range的每個(gè)值賦給前邊(可以是函數(shù))
    lala = [];
    def foo(arg):
    return arg + 100
    li = [11,22,33]
    lala = map(foo,li)
    print lala
    結(jié)果:
    [111, 122, 133]
    #也可以使用 lala.append(item+100)
    temp = map (lambda arg:arg+100,li)
  • filter函數(shù) #條件為真,將其加入序列中
    temp = []
    li = [11,22,33]
    def foo(arg):
    if arg <22:
        return True
    else:
        return False
    temp = filter(foo,li)
    print temp
    將li序列中滿足條件的返回temp序列中
    結(jié)果:11
  • reduce 累加(只能兩個(gè)參數(shù))
    print reduce(lambda x,y:x+y,[1,2,3] )
    結(jié)果 6
    將前一次的計(jì)算結(jié)果,傳遞為第二次計(jì)算的第一個(gè)參數(shù)
  • zip 函數(shù) #將列表中的第一個(gè)組成新的列表
    x = [1,2,3]
    y = [4,5,6]
    z = [4,5,6]
    print zip(x,y,z)
    結(jié)果:
    [(1, 4, 4), (2, 5, 5), (3, 6, 6)]
  • eval函數(shù) #直接計(jì)算字符串類型的運(yùn)算
    a ='8*8'
    print eval(a)
    結(jié)果:64

    字符串的格式化

    s = 'i am {0},{1}'
    print s.format('alex','xxx')
    i am alex,xxx

    反射 通過(guò)字符串的形式導(dǎo)入模塊,并以字符串的形式執(zhí)行函數(shù) (動(dòng)態(tài)切換數(shù)據(jù)庫(kù)連接)

    不允許使用import os 導(dǎo)入,用temp的方法導(dǎo)入

    temp = 'os'
    model = __import__(temp)
    print model
    print model.path
    輸出:
    
    


    getattr就是在mysqlhelper模塊中查找count函數(shù)
    Function就等于調(diào)用的count函數(shù)
    相應(yīng)的有delattr()、hasattr()判斷函數(shù)中是否含有相應(yīng)的模塊

#使用random生成驗(yàn)證碼
它使用的是ascall的值進(jìn)行生成的

import random
print random.random()
print random.randint(1,5)
#生成1-5之間的隨機(jī)整數(shù)
print random.randrange(1,3)
#生成大于等于1,小于3的隨機(jī)數(shù)
import random
code = []
for i in range(6):
    if i == random.randint(1,5):
        code.append(str(random.randint(1,5)))
    else:
        temp = random.randint(65,90)
        code.append(chr(temp))
print ''.join(code)

#注意:join和+=的區(qū)別
join效率更高,+=每次都要在內(nèi)存中請(qǐng)求一塊空間,join只申請(qǐng)一次

md5加密

#!/usr/bin/env python
#coding:utf-8
import hashlib
hash=hashlib.md5()
hash.update('admin')
print hash.hexdigest()
print hash.digest()
21232f297a57a5a743894a0e4a801fc3
!#/)zW??C?JJ???
#md5不能反解

序列化和JSON

應(yīng)用實(shí)例:(python 和python之間傳輸文件,單機(jī)游戲?qū)崟r(shí)保存)

為什么要序列化?

一個(gè)程序?qū)⒘斜泶嬖谝粋€(gè)程序中,另一個(gè)程序使用這個(gè)文件的時(shí)候。使用序列化之后在讓另一個(gè)程序去讀取的話,使兩個(gè)python程序之間內(nèi)存數(shù)據(jù)之間的交換,兩個(gè)獨(dú)立的進(jìn)程在內(nèi)存中看,他們的內(nèi)存空間不能互相訪問(wèn),如果兩個(gè)程序之間不僅僅只是簡(jiǎn)單的列表共享,還想其他數(shù)據(jù)交換,數(shù)據(jù)可能比較復(fù)雜。而且硬盤(pán)只能存字符串類型的數(shù)據(jù),只能通過(guò)系列化,存入文件,另一個(gè)程序然后讀取文件的內(nèi)容,然后將其反序列化之后,在加載到內(nèi)存中
序列化:把一個(gè)對(duì)象或(一個(gè)列表、字典),把對(duì)象通過(guò)Python特有的機(jī)制序列化,序列化就是以特殊的形式以過(guò)二進(jìn)制的方式給對(duì)象加密,并且序列化之后可以反序列化。

序列化

import pickle
li = ['axex',11,22,'ok','sb']
print pickle.dumps(li)
print type(pickle.dumps(li))
輸出結(jié)果:
(lp0
S'axex'
p1
aI11
aI22
aS'ok'
p2
aS'sb'
p3
a.

#是一個(gè)沒(méi)有規(guī)則的字符串類型

反序列化

import pickle
li = ['axex',11,22,'ok','sb']
dumpsed = pickle.dumps(li)
print type(dumpsed)
loadsed = pickle.loads(dumpsed)
print loadsed
print type(loadsed)

['axex', 11, 22, 'ok', 'sb']

將列表序列化到一個(gè)文件中

import pickle
li = ['axex',11,22,'ok','sb']
pickle.dump(li,open('E:/temp.pk','w'))
result = pickle.load(open('E:/temp.pk','r'))
#將文件中反序列化

JSON:一種標(biāo)準(zhǔn)化的數(shù)據(jù)格式,把不同格式的數(shù)據(jù)JSON化。
##兩種序列化的區(qū)別

  • pickle只能在python中使用
  • JSON是所有的語(yǔ)言都支持的接口
  • pickle 不但可以dump常規(guī)的數(shù)據(jù)類型,比如,字典、列表、集合,還可以序列化類、對(duì)象,基本上所有的類型都可以實(shí)現(xiàn)序列化,JSON只能序列化常規(guī)的數(shù)據(jù)類型。因?yàn)?,在不同的語(yǔ)言中類的格式不同。
  • pickle 序列化的序列的數(shù)據(jù)不可讀,但是JSON的數(shù)據(jù)格式是用人眼可以看出來(lái)他的格式
    import json
    name_dic = {'name':'wupeiqi','age':23}
    print json.dumps(name_dic)
    輸出結(jié)果:全部變成字符串
    {"age": 23, "name": "wupeiqi"}


    為什么多個(gè)了U呢,因?yàn)樵诖嫒雰?nèi)存中使用Unicode,你本事是utf-8,然后反序列化之后又變成Unicode

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


分享文章:python內(nèi)置函數(shù)和序列化-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://weahome.cn/article/dgdhgs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部