1. 程式人生 > 其它 >7.5學習日記

7.5學習日記

今日內容

匿名函式
什麼是匿名函式
匿名函式就是沒有名字的函式

為何要用匿名函式
用於臨時使用一次的場景
和其他函式配合使用

如何定義匿名函式

def foo(x,y):
return x+y

print((lambda x,y: x + y)(1,2))


salaries = {
'egon' : 321,
'jason' : 312,
'songhao' : 313
}

print(max(salaries,key= lambda name: salaries[name]))
print(min(salaries,key= lambda name: salaries[name]))
print(sorted(salaries,key= lambda name: salaries[name]))

names= ['lxx','hxx','wxx']
print(list(map(lambda name:names+"_vip",names)))


names= ['lxx','hxx_vip','wxx']
print(list(filter(lambda name:names.endswith('_vip'),names)))


form functools import reduce
res = reduce(lambda x,y:x+y,[1,2,3,4],555)
print(res)

面向過程程式設計思想

面向過程程式設計思想
過程就是流程,即先幹啥再幹什麼後幹什麼,
基於該思想寫程式就好比再設計一條條的流水線
優點:複雜的問題流程化,進而簡單化
缺點:牽一髮而動全身,擴充套件性差

模組

自定義模組
1.一個py就是一個模組
2.包就是一個存放有_init_.py檔案的資料夾,包的本質就是一個模組

三種來源:
1.自帶的
內建
標準庫
2.第三方的
pip3 install 第三方庫

3.自定義的
減少程式碼冗餘,把公共的功能提取出來


首次匯入模組
1.會觸發模組檔案的執行,會產生一個模組的名稱空間,用來存放模組執行過程中產生的名字
2.會在當前檔案空間中產生一個名字spom,該名字指向模組的名稱空間(後續的匯入直接引用之前已經產生的名稱空間)

名稱空間的關係在定義階段就已經產生了,與呼叫無關


import語法
import spam
spam.名字

import spam as sm(別名)
sm.名字

import spam as sm,os as xxx,sys,re

from .. import ...語法 (指名道姓,不易衝突,書寫麻煩)

from spam import money,read1,read2,change

from spam import *
把所有的名字都拿過來,加大了衝突的機率,書寫方便
__all__ = ["名字""名字"]
*號就只匯入__all__裡面的名字

迴圈匯入問題
解決迴圈匯入問題的最好辦法就是不出現迴圈匯入問題

第一種思路:名字定義放到最上面

第二種思路:把要的值放到中間模組中,大家都能使用(必須是字串型別)

模組的搜尋路徑

優先順序
記憶體 ----》內建----》sys.path (環境級)

自己定義的模組名字儘量不要和內建的模組名字重名
自定義的模組放到sys.path 裡面
第一種
sys.path.append("檔案路徑")
第二種
放在執行程式的同一個資料夾裡
在匯入語句中檔案分隔符是.
在使用語句中出現的.代表問某一個名稱空間要名字

區分py檔案的兩種用途

第一種用途是被匯入使用
第二種是直接執行使用
區別就是執行程式會把自己的所在資料夾加入到sys.path 環境當中去

內建變數
當檔案被匯入的時候__name__的值是__main__
if __name__ == "__main__"