(一)模組基礎

2022-01-30 23:46:22 字數 4000 閱讀 1183

上節課複習:

三元表示式:

結果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):

print

(y)

print

(arg)

y = 20y = 30y = 40aaa()

函式**:

# 提前寫出函式的呼叫,再去考慮函式體的實現

# 怎麼樣提前寫出函式的呼叫:在另乙個函式中寫出函式的呼叫

# 再去考慮函式體的實現:根據實際的需求

def

my_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)

print

(res)

#def

download_action1(data):

print

(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 模組是乙個包含所有你定義的函式和變數...