今天劈里啪啦講了一大堆,*args,第二十四天

風聲起,琴聲動,客怎眠。

靜夜瀾,江南曲,心漣漪。

看盡浮沉,悵然只怕,醉夢一場。

韶華易逝,紅顏一曲,明又何夕。

                                ——孝平


什麼是函數?

    函數就是具備某一特定的工具

爲什麼用函數?

    減少重複代碼

    增強程序的擴展性

    增強可讀性

如何用函數?

    1.函數的使用原則:先定義後調用(*****)    

        定義階段:只檢測語法不執行代碼

        調用階段:執行函數代碼

    2.定義階段與調用階段:

        2.1:語法(******)

            def func(參數1,參數2,...)

                “""文檔註釋"""

                code1

                code2

                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後的值當作本次調用結果返回

    

    注意:

        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 條件}

匿名函數(*****)

lambda 參數1,參數2:表達式

max
min
sorted
map
filter

12內置函數

13函數遞歸(****)


面向過程編程

核心過程二字,過程指的是解決問題的步驟,即先幹什麼,再幹什麼,然後幹什麼

基於該思想編寫程序就好比設計一條流水線,是一種機械式的思維方式

 優點:

    複雜的問題流程化,進而簡單化

缺點:

    擴展性極差

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:
            break




def 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

什麼是模塊

    模塊是一系列功能的集合

    常見的模塊形式(自定義模塊,第三方模塊,內置模塊):

        1.一個module.py文件就是一個模塊,文件名是module.py,而模塊名是module

        2.一個包含有__init__.py文件的文件夾也是模塊

        3.已被編譯爲共享庫或DLL的C或C++擴展

        4.使用C編寫並鏈接到python解釋器的內置模塊

2.爲什麼要用模塊

    1.用第三天或者 內置的模塊是一種拿來主義,可以極大地提升kaifaxiaol

    2.自定義模塊即將我們自己程序中需要用到的公共的功能寫入一個python文件,然後

程序的各部分組件可以通過導入的方式來引用/重用自定義模塊中的功能

3.如何使用模塊

    導入的方式有兩種

    import 模塊名

    from 模塊名 import 具體的功能

    


後面還有一大堆零散文件的內容,主要是怎麼去寫一個項目的,由於我都理解了,太麻煩了,我就不寫了,想要了解的私聊我,

發佈了43 篇原創文章 · 獲贊 8 · 訪問量 8791
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章