python-study-16

來源:互聯網
上載者:User

標籤:spl   資料   處理   機械   流程   wrapper   word   產生式   \n   

函數總結

 

‘‘‘1、什麼是函數    函數就是具備某一特定功能的工具2、為什麼用函數    減少重複代碼    增強程式的擴充性    增強可讀性3、如何用函數    1、函數的使用原則:先定義後調用(*****)        定義階段:只檢測文法不執行代碼        調用階段:執行函數代碼    2、定義階段與調用階段:        2.1:文法 (*****)            def func(參數1,參數2,...):                """文檔注釋"""                code1                code2                code3                return 傳回值        2.2 形參與實參 (*****)            形參本質就是變數名            實參本質就是變數的值            形參:                位置形參                    def foo(x,y):                        pass                預設形參                    def foo(x,y=1):                        pass                *args                    def foo(x,*args):                        pass                **kwargs                    def foo(x,**kwargs):                        pass            實參:                位置實參                    foo(1,2,3,4)                關鍵字實參                    foo(x=1,y=2,z=3)                    foo(x=1,1) # 錯誤                    foo(1,x=1) #錯誤                *可迭代的對象                    foo(*‘hello‘)                **字典                    foo(**{‘x‘:1,‘y‘:2})        2.3 傳回值(*****)            return是函數結束的標誌,函數內可以有多個return,但只要執行一次函數就立刻結束            並且把return後的值當作本次調用結果返回            def foo(x,y):                return x+y            res=foo(1,2)            注意:                1、傳回值可以是任意類型                2、傳回值沒有個數限制                    函數內沒有return:預設返回None                    return 值1:返回該值                    return 值1,值2,值3:返回(值1,值2,值3)    3、函數對象(*****)        def foo():            pass        函數可以被當作資料去處理        1、引用            f=foo        2、當作參數            print(foo)        3、當作傳回值            def bar():                def wrapper()                    pass                return wrapper            f=bar()        4、當作容器類類型的元素            def f1():                pass            def f2():                pass            l=[f1,f2]            l[0]()            func_dic={                ‘f1‘:f1,                ‘f2‘:f2            }    4、函數嵌套(*****)        4.1 函數的嵌套調用            def foo()                bar()                f1()                f2()            foo()        4.2 函數的嵌套定義            def f1():                def f2():                    pass                f2()    5、名稱空間與範圍(******)        內建名稱空間        全域名稱空間        局部名稱空間            def foo(x,y): #x=1,y=2                pass            foo(1,2)        載入順序:內建->全域-》局部        尋找名字的順序:從當前位置往上尋找            如果當前位置在局部            局部—》全域-》內建        x=1        def outter():            def wrapper():                print(x)            return wrapper        f=outter()        def bar():            x=111111            f()        全域範圍:全域存活,全域有效            內建+全域        局部範圍:臨時存活,臨時有效            局部        l=[]        n=100        def foo():            l.append(1111)            global n            n=1        def f1():            x=1            def f2():                def f3():                    nonlocal x                    x=10        globals()        locals()    6、閉包函數(****)        x=1        def outter():            x=10            def wrapper():                print(x)            return wrapper        f=outter()    7、裝飾器(****)        def deco(func):            def wrapper(*args,**kwargs):                res=func(*args,**kwargs)                retutrn res            return wrapper        def deco1(x=1,y=2):            def deco(func):                def wrapper(*args,**kwargs):                    res=func(*args,**kwargs)                    retutrn res                return wrapper            return deco        @deco        def index():            pass    8  迭代器(****)        for        max        min        sorted        filter        map    9  產生器(***)    10 三元運算式、列表推導式,字典產生式,產生器運算式(*****)        res=條件成立的結果 if 條件 else 條件成立的結果        l=[運算式 for i in 可迭代對象 if 條件]        g=(運算式 for i in 可迭代對象 if 條件)        d={k:v for i in 可迭代對象 if 條件}    11 匿名函數(*****)        lambda 參數1,參數2:運算式        max        min        sorted        map        filter    12 內建函數    13 函數遞迴(****)‘‘‘def deco1(func1): #func1=wrapper2    def wrapper1(*args, **kwargs):        print(‘第一個裝飾器‘)        res1 = func1(*args, **kwargs)        return res1    return wrapper1def deco2(func2): #func2=最原始的index    def wrapper2(*args, **kwargs):        print(‘第二個裝飾器‘)        res2 = func2(*args, **kwargs)        return res2    return wrapper2@deco1 #index=deco1(wrapper2)=wrapper1@deco2 # index=deco2(index)=wrapper2def index():    print(‘from index‘)index()‘‘‘第一個裝飾器第二個裝飾器from index‘‘‘
View Code

 

 

面向過程編程

‘‘‘面向過程編程    核心過程二字,過程指的是解決問題的步驟,即先幹什麼、再幹什麼、然後幹什麼...    基於該思想編寫程式就好比在設計一條流水線,是一種機械式的思維方式    優點        複雜的問題流程化、進而簡單化    缺點        擴充性極差‘‘‘# 接收使用者輸入使用者名稱,進行使用者名稱合法性校正,拿到合法的使用者名稱def check_user():    while True:        name = input(‘username>>‘).strip()        if name.isalpha():           return name        else:            print(‘使用者名稱必須為字母,傻叉‘)# 接收使用者輸入密碼,進行密碼合法性校正,拿到合法的密碼def check_pwd():    while True:        pwd1=input(‘password>>: ‘).strip()        if len(pwd1) < 5:            print(‘密碼的長度至少5位‘)            continue        pwd2=input(‘again>>: ‘).strip()        if pwd1 == pwd2:            return pwd1        else:            print(‘兩次輸入的密碼不一致‘)def check_age():    pass# pwd=check_pwd()# print(pwd)# 將合法的使用者名稱與密碼寫入檔案def insert(user,pwd,age,path=‘db.txt‘):    with open(path,mode=‘a‘,encoding=‘utf-8‘) as f:        f.write(‘%s:%s:%s\n‘ %(user,pwd,age))def register():    user=check_user()    pwd=check_pwd()    age=check_age()    insert(user,pwd,age)    print(‘register successfull‘)register()# 使用者功能層def register():    while True: # 檢測使用者名稱        name=input(‘username>>: ‘).strip()        #檢測使用者是否重複,如果重複了則重新輸入,否則break        res=check_user_interface(name)        if res:            print(‘使用者存在‘)        else:            break    while True: # 檢測密碼        pwd1 = input(‘pwd1>>: ‘).strip()        pwd2 = input(‘pwd2>>: ‘).strip()        if pwd1 != pwd2:            print(‘兩次輸入密碼不一致,重新輸入‘)        else:            breakdef tell_info():    name=input(‘>>: ‘).strip()    info=select(name)    print(info)# 介面層def check_user_interface(name):    res = select(name)  # res=[‘egon‘,‘123‘]    if res:        return True    else:        return False# 資料處理層def select(name):    with open(‘db.txt‘, ‘r‘, encoding=‘utf-8‘) as f:        for line in f:            info = line.strip(‘\n‘).split(‘:‘) #info=[‘egon‘,‘123‘]            if name == info[0]:                return info
View Code

 


模組的使用

‘‘‘1、什麼是模組    模組是一系列功能的集合體    常見的模組形式(自訂模組、第三方模組、內建模組):        1、一個module.py檔案就是一個模組,檔案名稱是module.py,而模組名是module        2、一個包含有__init__.py檔案的檔案夾也是模組        3、已被編譯為共用庫或DLL的C或C++擴充        4、使用C編寫並連結到python解譯器的內建模組2、為什麼要用模組    1、用第三方或者內建的模組是一種拿來主義,可以極大地提升開發效率    2、自訂模組即將我們自己程式中需要用到的公用的功能寫入一個python檔案        然後程式的各部分組件可以通過匯入的方式來引用/重用自訂模組中的功能3、如何用模組    匯入的方式有兩種    import 模組名    from 模組名 import 具體的功能‘‘‘
View Code

 


模組的搜尋路徑

一個py檔案就是一個模組,在匯入時必須從某一個檔案夾下找到該py檔案模組的搜尋路徑指的就是在匯入模組時需要檢索的檔案夾們匯入模組時尋找模組的順序是:    1、先從記憶體中已經匯入的模組中尋找    2、內建的模組    3、環境變數sys.path中找        強調:sys.path的第一個值是當前執行檔案的所在的檔案夾
View Code

 


python檔案的兩種用途

一:可以被當作指令碼去執行二:可以被當作模組匯入
View Code

 


軟體開發的目錄規範

python-study-16

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.