python整理-day4

來源:互聯網
上載者:User

標籤:

1.Python基礎

2.基礎資料型別 (Elementary Data Type):str,dict,list,int

  s="wzc" =>str

3.函數式編程

  函數定義

  內建函數

    檔案處理

注意:

li=[11,22,33,44]def fi(arg):    arg.append(55)fi(li)print(li)li=fi(li)print(li)

 這裡需要說明的是,函數預設返回的是None,所以我們在使用的時候需要通過參數引用

 

4.其他

  三元運算

  lambda運算式

s="哈哈"bytes(s,encoding=utf-8)False:[],{},(),None,0,""

 

 

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcdef f1():    passprint(callable(f1))

 

中文說明:檢查對象object是否可調用。如果返回True,object仍然可能調用失敗;但如果返回False,調用對象ojbect絕對不會成功。

注意:類是可調用的,而類的執行個體實現了__call__()方法才可調用。

版本:該函數在python2.x版本中都可用。但是在python3.0版本中被移除,而在python3.2以後版本中被重新添加。

 
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzca=chr(65)print(a)b=ord("B")print(b)

 

可以找到ascii碼,也可以反向找出,數字轉化為字母,字母轉化為數字,這裡面需要依賴ascii碼的對應關係

 

產生隨機數

andom.randrange這就是隨機數位範圍.如果和chr相結合,就會有隨機字母了,但是需要注意,acsii是有範圍的,65-90就是大寫字母的範圍

這裡面的範圍,是1<=i<5的,所以在輸入的時候需要後面一個加一位

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcimport randomli=[]num=0for  i  in range(6):    r=random.randrange(0,5)    if r == 2 or r == 4:        c=random.randrange(0,9)        b=str(c)        li.append(b)    else:        c=random.randrange(65,91)        b=chr(c)        li.append(b)        num=0re="".join(li)print(re)

 這種是產生數字和英文相結合的隨機驗證碼

 

1.讀取檔案內容open,str到記憶體

2.python,把字串=》編譯=》特殊代碼

3.執行代碼

 

Compile,就是用來編譯代碼的

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcs=‘print("123")‘#將字串編譯成Python代碼
r=compile(s,"string","exec")#這裡的exec和下面的沒有關係
print(r)exec(r)#執行Python代碼

 

Single:把上面的代碼,編譯成單行的Python程式

eval:編譯成運算式

exec:編譯成一模一樣的模式

 

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcr1=exec("7+8+9")
print(r1)
r2=eval("7+8+9")#Eval:通過這個功能,可以將字串,轉化為運算式,並且去執行以下

print(r2)

 

Exec:要比eval更牛逼,exec能執行所有Python代碼和字串,而eval只能執行運算式

但是eval比exec多一個功能就是,eval有傳回值,而exec沒有

 

快速查看對象提供了哪些功能

print(dir(list))

 

分頁功能

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcr=divmod(99,10)print(r)

 

分頁功能就是通過計算得到商,同時可以得到餘數。返回的是一個元祖

 

對象是類的執行個體

對象"wzc","www"他們的類就是"str"

對象[11,22,33],["w","z","c"]他們的類就是list

以此類推dict的類大家也就知道了

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzca=["a","b"]r=isinstance(a,list)print(r)

 

Isinstance,判斷對象是否是某個類的執行個體

這個和type 的區別,是isinstance是可以往上找,在基類裡面會用到,而type不可以

 

filter(函數,可迭代的對象)

列表,元祖,字典,都是可迭代的對象

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcli=[11,22,33,44,]def f1(arg):    if arg > 22:        return Trueret=filter(f1,li)print(list(ret))

 

在filter的內部,首先會去迴圈第二個參數,然後在每一次迴圈的內部執行第一個參數

#filter內部,迴圈第二個參數#result=[]#for  item in 第二個參數#     r=第一個參數(item)#    if r:#        result(item)#return result#filter迴圈函數第二個參數,讓每個迴圈元素執行函數,如果函數返回Ture,表示元素合法

 

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcli=[11,22,33,44,]def f1(arg):    if arg > 22:        return Trueret=filter(f1,li)print(list(ret))li=[11,22,33,44,]ret1=filter(lambda a:a>33,li)print(list(ret1))ret=map(lambda a:a+100,li)print(list(ret))

 這樣就可以通過lambda運算式也可以實現相同的功能

map(函數,可迭代的對象(可以for迴圈的東西))

filter:函數返回Ture,並將元素添加到結果中

map:將函數傳回值添加到結果中

 

frozenset():不可變集合

 

globals():所有的全域變數

locals():所有的局部變數

 

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcs=‘wzcceqwediojdfiosjdjkfnjkwdhuiahjcnzkxcnx‘print(hash(s))

 

在儲存的時候,更多的是存一個hash值,其他語言也基本這樣

 

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcs="哈哈"print(len(s))b=bytes(s,encoding="utf-8")print(len(b))

 

Python3是按照字元,Python2是按照位元組,python3即可以通過字元,也可以通過位元組來查看

 

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcs=‘{"k1":"v1"}‘#裡面必須是雙引號,單引號不行print(type(s),s)import jsonn=json.loads(s)#將一個字串轉換成Python基礎資料型別 (Elementary Data Type){},[]print(type(n),n)

 

要通過json轉換的話,裡面的元素必須用雙引號,單引號不行

 

Max():最大

Min():最小

Sum():求和

memoryview():和記憶體位址相關的一個類

object():一個類,所有類的副類

pow():求方,等同2**10==pow(2,10)

reverse():翻轉,list.reverse()==reverse(list)

round():四捨五入

slice():取間隔,s="12345",print([0:2:2])功能相同

sorted():排序,list.sort()=sorted(list)

需要掌握的內建函數

 

裝飾器:從外部裝飾一個函數

開放封閉原則

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzc# def f1():#     print("F1")# def f2(xxx):#     xxx()# f2(f1)def outer(func):    def inter(*args, **kwargs):        print("before")        r=func(*args, **kwargs)        print("after")        return r    return inter@outerdef f1(arg):    print(arg)    return "haha"r=f1("heihei")print(r)print("#")@outerdef f2(a1,a2):    print(a1,a2)f2(11,12)

 

 

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcdef f1():    print("F1")def f2(xxx):    xxx()f2(f1)

 

函數是可以當做參數來做調用的,這裡面的f1是執行的

 

def outer(func):    def inter():        print("before")        func()        print("after")    return inter@outerdef f1():    print("F1")f1()

 

@+函數

功能:

  1、自動執行outer函數,並將其下面的函數名f1當做參數傳遞

  2、將outer函數的傳回值重新賦值給f1

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcdef outer(func):    def inter(*args, **kwargs):        print("before")        r=func(*args, **kwargs)        print("after")        return r    return inter@outerdef f1(arg):    print(arg)    return "haha"r=f1("heihei")print(r)print("#")@outerdef f2(a1,a2):    print(a1,a2)f2(11,12)

 

當fi有參數的時候,裝飾器outer也需要跟著有參數才可以執行

當有多個參數的時候,就可以用**來處理

 

 

 

python整理-day4

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.