Python 高階 程序和執行緒

2021-09-26 08:14:54 字數 4981 閱讀 2886

一、編碼規範

1、**編排

1)縮排四個空格,空格與tab不能混用

2)行長80,防止單行邏輯複雜

2、import:

1)不能用 from *** import *

2)順序:標準庫、第三方庫、自定義庫

3)單行不要import多個庫

4)模組內用不到的不要去import

3、空格

1)標點符號後面跟乙個空格,前面不要空格(行尾分號後無空格)

2)運算子前後各乙個空格

3)當 = 用於指示關鍵字引數或預設值時,兩側無空格

4、適當新增空行

1)函式間:頂級函式間空兩行,類的方法之間空1行

2)同一函式內的邏輯塊之間空一行

3)檔案結尾:留乙個空行(unix中\n是檔案結束符)

5、注釋

1)忌:逐行新增注釋、沒有乙個注釋

2)行內注釋:單行邏輯過於複雜時新增

3)塊注釋:一段邏輯開始時新增

4)引入外來演算法或者配置時需在注釋中新增原鏈結,標明出處

5)函式和類盡可能新增docstring

6、命名

1)不要用單字母的變數名

2)包名、模組名、函式名、方法名小寫,單詞間用下劃線連線

3)類名、異常名使用capwords(首字母大寫)的方式,異常名結尾加error或warning字尾

4)全域性變數盡量使用大寫,一組同型別的全域性變數要加統一字首,單詞用下滑線連線

7、字串拼接盡量使用join

速度快,記憶體消耗小

8、語意明確、直白

9、程式的構建

1)乙個函式只能做一件事,並把這件事做好

2)大的功能用小的函式之間的靈活組合來完成

3)避免編寫龐大的程式

10、函式名必須有動詞,最好是do_something形式,或somebody_do_something句式

11、自定義的變數名、函式名不要與標準庫中的名字衝突

12、格式化

alt+shift+f

二. 函式閉包

引用了自由變數的函式即是乙個閉包,這個被引用的自由變數和這個函式一同存在。

def foo():

l =

def bar(i):

return l

return bar

if __name__ == "__main__":

f1 = foo()

print(f1)

#.bar at 0x000000c17df41378>

def foo():

l =

def bar(i):

return l

return bar

if __name__ == "__main__":

f1 = foo()

f2 = foo()

f3 = foo()

print(f1(1))

print(f2(2))

print(f3(3))

"""[1]

[2][3]

"""

def foo():

l =

def bar(i):

return l

return bar

if __name__ == "__main__":

f1 = foo()

f2 = foo()

print(f1(1))

print(f2(2))

print(f2(3))

"""[1]

[2][2, 3]

"""

三、裝飾器

1、最簡裝飾器

def deco(func):

def warp():

print('hahaha')

return warp

@deco

def a():

print('joker')

a()

#hahaha

邏輯:a() -->deco --> func:a --> return warp:warp() --> 「hahaha」

def deco(func):

def warp():

print('hahaha')

func()

return warp

@deco

def a(): #不帶參

return'joker'

print(a()) #被warp捕獲

"""hahaha

none

"""

def deco(func):

def warp():

print('hahaha')

return func()

return warp

@deco

def a():

print('hahaha')

return'joker'

print(a())

"""hahaha

hahaha

joker

"""

2、函式體加引數

def deco(func):

def warp(n):

print('hahaha')

return func(n)

return warp

@deco

def a(name):

print(name)

a('joker')

"""hahaha

joker

"""

def deco(func):

def warp(n):

print('hahaha')

n = 'ok'

return func(n)

return warp

@deco

def a(name): (引數等同於作廢)

print(name)

a('joker')

"""hahaha

ok"""

def deco(func):

def warp(n,n1):

print('hahaha')

n = 'ok'

return func(n,n1)

return warp

@deco

def a(name,name2):

print(name)

print(name2)

a('joker','faker')

"""ok

faker

"""

課堂練習

1)輸入兩個數字,裝飾器的作用是求這兩個數字的和,本函式的作用是列印這兩個數字的和

def deco(func):

def warp(n1,n2):

sum_ = n1 + n2

return func(sum_ ,n2)

return warp

@deco

def a(name1,name2):

print(name1)

a(10,20)

2)流氓驗證碼:(

在使用裝飾器的情況下,無論你輸入什麼驗證碼都返回驗證碼錯誤,如果不使用,該正確就列印正確。)

import random

def deco2(parms):

def deco(func):

def warp(*args,**kwargs):

if parms:

kwargs['n1'] = -1

return func(*args,**kwargs)

return warp

return deco

@deco2(true)

def a(n1,n2):

if n1 == n2:

print('驗證碼正確')

else:

print('驗證碼錯誤')

num = random.randrange(1000,9999)

print('驗證碼是:%d'%num)

num2 = int(input('>>'))

a(n1=num,n2=num2)

l瀏覽網頁

import time

time1 = 0

time2 = 0

def check_ip(func):

def warp(*args,**kwargs):

if round(abs(time2 - time1),3)<0.5:

print('404')

else:

return func(*args,**kwargs)

return warp

@check_ip

def a(ip):

print('進入網業成功')

for _ in range(50):

ip = '127.0.0.1'

time1 = time.time()

a(ip)

time2 = time.time()

time.sleep(1)

Python 執行緒和程序

一 什麼是執行緒 1 執行緒是作業系統能夠進行運算排程的最小單位。它被包含在程序中,是程序中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序中可以併發多個執行緒,每條執行緒並行執行不同的任務。每個程序至少包含乙個執行緒.二 什麼是程序 1 乙個程序就是乙個程式的例項,每個程序裡面...

python執行緒和程序

執行緒 計算機能夠進行排程的最小單位 乙個程序可以包含多個執行緒,執行緒共享程序資源 多執行緒併發 上下文程序就像乙個工作的房間 記憶體 以及房間裡工作需要的資源 i o啊,網絡卡啊 執行緒相當於工作的人 所有的在同乙個程序中的執行緒是共享一塊記憶體空間 pid 唯一的程序識別符號 each pro...

python程序和執行緒

爬蟲開發過程中 程序和執行緒的概念是非常重要的 提高爬蟲的 工作效率 打造分布式爬蟲 都離不開程序和執行緒的身影 多程序 多執行緒 協程 分布式程序等四個方面 使用os模組中的fork方法 使用multiprocessing模組 前者僅僅適用unix linux作業系統 對windows不支援 後者...