python:基礎知識

基本數據類型

數字python

整型,浮點型,布爾型,複數

數據庫

序列,集合,字典

1 組

# 序列-字符串 str 不可變類型
# 序列-列表 list [1,2,3,4,5,6,'as'] 可變類型
# 序列-元組 tuple (1,2,3,4,5,6,'as') 不可變類型
    #和列表選擇、切片很類似
    #type((1)) int;type(('as')) str 此處()不是元祖,而是運算符
    # ord() 查詢字符串返回對應的 ASCII 數值 
# 集合 set {1,2,3,4,5}
    # 1 無序
    # 2 不重複 {1,1,2,2,3,3} {1,2,3}
    # 3 差集- {1,2,3,4,5}-{3,4} {1,2,5}
    # 4 交集&
    # 5 並集|
    # 6 type({}) 爲dict字典;set() 建立一個無序不重複元素集
# 字典 dict {'q':'打擊','w':'前進'}
    # key不重複
    # key需爲不可變類型,不能爲列表,能夠爲元組
    # {} 定義空字典

2 集合

set {1,2,3,4,5}編程

1 無序 
2 不重複 {1,1,2,2,3,3} {1,2,3} 
3 差集- {1,2,3,4,5}-{3,4} {1,2,5} 
4 交集& 
5 並集| 
6 type({}) 爲dict字典;set() 建立一個無序不重複元素集

3 字典

dict {'q':'打擊','w':'前進'} key不重複 key需爲不可變類型,不能爲列表,能夠爲元組 {} 定義空字典安全

注: 1.列表能夠存放不一樣類型的數據,是最經常使用的Python數據類型。與字符串不一樣,列表元素支持改寫。 
2.列表和元組的區別在於:列表中的元素的值能夠修改,而元組中的元素的值不能夠修改。元組比列表更加安全,由於不能修改 
3.集合一個功能是進行集合操做,另外一個功能是消除重複的元素。

4 包、模塊、類

# 區分包和文件夾 包內含__init__.py文件 此模塊名爲:init,內容可爲空,加上,可解決
# import引入模塊
# from t import c1 從t模塊引入c1類、方法、變量或者 從t文件引入c1模塊
# from t import * 可引入t全部類 不推薦,當命名衝突時難處理
# python 一行建議不超過80,換行,上行末尾加:\,不推薦,可用括號
# 包和模塊不會被重複導入
# 避免循環引入模塊

5 類

# 特殊類:枚舉 enum (from enum import Enum)
    # 枚舉標籤名稱最好用大寫,表示常量
    # 枚舉的意義重在標籤,不在數值
    # 字典和類變量的缺點是:可變,值可被輕易更改;沒有防止相同標籤的功能
    # 枚舉類型:VIP.GREEN 枚舉名稱:VIP.GREEN.name 枚舉值:VIP.GREEN.value
    # 枚舉能夠被for in遍歷,遍歷VIP.__members__.items()或VIP.__members,可將別名加入遍歷
    # 枚舉能夠作==比較,不能作大小比較
    # 枚舉值相同時,第二個標籤將成爲第一個的別名
    # 用法:在數據庫中存儲數值,在代碼中用標籤表明類型,經過數字轉換成數據類型 a=1 VIP(a)
    # 值需強制爲整型數字,不準值相同時(from enum import IntEnum,unique) ,class VIP(IntEnum,unique):

#枚舉案例閉包

from enum import IntEnum,unique
#from enum import Enum

class VIP(IntEnum):
    YELLOW=1
    RED=2
    BLUE=2
    GREEN=4
print(VIP.GREEN)
print(VIP.GREEN.name)
print(type(VIP.GREEN),type(VIP.GREEN.name))
print(VIP.GREEN.value)

for v in VIP:
    print(v)
    
for v in VIP.__members__:
    print(v)
    
for v in VIP.__members__.items():
    print(v)
    
a=1
print(VIP(a))

clipboard.png

6 函數

# 函數能夠做爲結果被返回,函數能夠賦值給另一個變量
# 閉包(和函數的做用域有關)
    # 閉包=函數+環境變量
    # 環境變量:定義在函數外部,非全局變量,避免外部對其影響
    # 環境變量保存在  函數.__closure__[0].cell_contents中
    # nonlocal將變量轉爲環境變量
    # 閉包容易形成內存泄漏,用面向對象更加主流
#三目運算 x if x>y else y
# map 函數,序列 每一個元素依次執行函數
    # 結合lambda匿名函數使用 list_x=[1,2,3] list_y=[1,2,3] r=map(lambda x,y:x*x+y,list_x,list_y)
# reduce在python3中已不是全局函數 from functools import reduce
    # 連續計算 返回結果

# 閉包案例展現app

def curve_pre():
    a=25
    def curve(x):
        return a*x*x
    return curve
f=curve_pre()
print(f.__closure__)
print(f.__closure__[0].cell_contents)
print(f(2))

#閉包案例:計算走了多遠
origin=1
def dis(pos):
    def do(x):
        nonlocal pos
        pos=x+pos
        return pos
    return do
t=dis(origin)
print(t(3))
print(t(3))

clipboard.png

7 裝飾器 decorator(AOP編程思想)

# 不改變原有函數,增長新的特性
# 最有價值的功能 @+裝飾器的名字 不改變原函數調用方式
    # 直接調用原函數便可,無需經過新函數(體現出原函數和新函數之間的關聯)
    
    # 爲知足原函數可任意傳入參數,可在裝飾器內的函數加入 可變參數(*任意+參數名):例如:wrapper(*args)
    
    # **kw 關鍵字參數,能夠指定任意數量,打印kw會以字典形式出現
    # 爲支持**kw關鍵字參數,可在裝飾器內部加入參數 **kw

# 裝飾器案例函數

import time

def decorator1(func):
    def wrapper(*args,**kw):
        func(*args,**kw)
        print(time.time())
    return wrapper
@decorator1
def f1():
    print('打印如今時間:')
#f=decorator1(f1)
#f() 這裏就能夠看出裝飾器的好處能夠直接引用f1
f1()


@decorator1
def f2(myName):
    print(myName,'打印如今時間:')
f2('MA')

@decorator1
def f3(myName,**kw):
    print(myName,'打印如今時間:')
    print(kw)
f3('MA',a=1,b=2)

clipboard.png

相關文章
相關標籤/搜索