上節課複習:
三元表示式:
結果1 if 條件 else 結果2列表推導式
[列表元素 for v in iterable]
字典推導式
遞迴函式:
遞迴:函式的自呼叫直接自呼叫:自己調自己
間接自呼叫:自己調別人,別人再調回自己
回溯(回溯條件) =>遞推(遞推開始,回溯的結束點)defget_age(num):
if num == 1:
return 18age = get_age(num - 1) - 2age = get_age(5)
匿名函式
lambda 形參們: 返回值1. 用變數接收
2. 結合內建函式使用
內建函式
max'''def func():
return [lambda x: x * i for i in range(4)] # [6, 6, 6, 6]
# return [lambda x, i=i: x * i for i in range(4)] # [0, 2, 4, 6]
# def m(2):
# return 2 * 0|1|2|3
print([m(2) for m in func()])
# 1.func()執行結果為list,所以被迭代# 2.for i in range(4)能產生4次結果,所以func()的返回值list有四個元素
# 3.最終列印的列表推導式也有四個元素
# 4.func()返回值list中存放的是四個函式位址,匿名函式體沒有被執行
# 5.m(2)時,匿名函式體才被呼叫,但四個匿名函式都已形成,再去獲得i的值,i存放的是最後一次值3
#理解案例
y = 10
def aaa(arg=y):
(y)
(arg)
y = 20y = 30y = 40aaa()
函式**:
# 提前寫出函式的呼叫,再去考慮函式體的實現# 怎麼樣提前寫出函式的呼叫:在另乙個函式中寫出函式的呼叫
# 再去考慮函式體的實現:根據實際的需求
defmy_sleep(sec):
import
time
current_time =time.time()
while time.time() - current_time pass
def download(fn=none):
print('')
my_sleep(1)
data = '
'print('')
if fn: #
res = fn(data) #
ifres:
print('
操作成功')
return
true
print('
操作失敗')
return
false
return data #
#res = download()
#print(res)
defdownload_action(data):
print('
往檔案中寫')
with open(
'1.txt
', '
w', encoding='
utf-8
') as f:
f.write(data)
return
true
return
false
res =download(download_action)
(res)
#def
download_action1(data):
(data)
return
true
res =download(download_action1)
print(res)
今日內容:
一.了解什麼是模組二.為什麼要使用模組
三.import匯入模組:命名空間
四.起別名:原名與別名
五.from匯入方式
六.*的知識點
七.查詢順序
八.自啟檔案與模組的區別
一、1.1模組定義:
# 模組:一系列功能的集合體# 使用模組:在要使用該模組功能的檔案中匯入模組,通過import關鍵字匯入模組名
1.2
模組的四種存在方式:1.使用python編寫的.py檔案(任何乙個py檔案都可以作為模組)
2.包:一堆py檔案的集合體
3.使用c編寫並鏈結到python直譯器的內建模組
4.已被編譯為共享庫或dll的c或c++擴充套件
注:# 1.每乙個檔案都會產生自己的全域性命名空間,且相互不影響
# 2.多次匯入,只會編譯執行模組一次,將其載入到記憶體,之後的都是直接對名字的引用
起別名:# 通過as關鍵字可以給模組起別名: 模組名一旦起別名,原模組名就不能再使用
#1.可以簡化模組名字
import
mmmmmmmmmmmmmmmmmm3 as my_m3
print(my_m3.num)
# 2.可以統一功能cmd = input('資料庫選擇 1:mysql | 2:oracle:')
if cmd == '1':
import mysql as db
# mysql.excuse()
else:
import oracle as db
# oracle.excuse()
db.excuse()
from 模組名 import 名字1, 名字2, ..., 名字n# 可以指名道姓匯入模板中所有想匯入的名字
from 模組名 import *#匯入的是模組中的__all__這個列表
#1、系統預設該列表不會收錄_開頭的名字
#2、可以自定義__all__列表來規定外界通過*可以匯入的名字
#不建議直接匯入 *,因為可讀性差,且極容易出現變數重名
#模組中有 名字a
from 模組名 import *
#可以使用模組中的a
a = 20
#模組中的a就被覆蓋了,且在**上還不能直接看出
起別名:
# 其別名
from 模板名 import 名字1 as 別名1, ..., 名字n as 別名n
# __name__:# 1.在py檔案作為模組被使用時,__name__為模組名
# 2.在py檔案自執行時,__name__為字串 '__main__'
print("共有邏輯")if __name__ == '__main__':
# 所有自執行的邏輯
print("m6: 我是自執行的")
a = 10 # 產生的是全域性的名字
else:
# 所有模組的邏輯
print("m6: 我被匯入執行的")
print(a) # 會報錯:走else就不可能走if,所以a壓根沒產生
node基礎 一 http模組
http.createserver function request,response 設定返回頭 response.write this is test 返回的內容 response.end end 響應結束 listen 2017 設定埠 2.http.get options callback ...
python基礎 模組與包(一)
模組與包 python中的py檔案我們拿來呼叫的為之模組 主要有內建模組 python直譯器自帶 第三方模組 別的開發者開發的 自定義模組。目前我們學習的是內建模組與第三方模組。通過import來匯入模組。一.time模組 time.函式名稱 1 時間戳 timestamp 通常來說,時間戳表示的是...
Python基礎 模組 datetime模組
以往指令碼基本是用 python 直譯器來程式設計,如果從 python 直譯器退出再進入,那麼定義的所有的方法和變數就都消失了。為此 python 提供了乙個辦法,把這些定義存放在檔案中,為一些指令碼或者互動式的直譯器例項使用,這個檔案被稱為模組 module 模組是乙個包含所有你定義的函式和變數...