python基礎學習筆記(五)裝飾器,高階函式

2021-08-17 14:33:42 字數 2970 閱讀 3549

import multiprocessing

def process1():

return 1

def process2():

return 2

p1=multiprocessing.process(target=process1)

p2=multiprocessing.process(target=process1)

p1.start() #啟動

p2.start()

p1.join() #在主程式中等待相應程序完成

p2.join()

def line_out():

def line(x):

return x+1

my_line=line_out()

print(my_line(2)) #3

函式定義中引入外部變數

def line_out():

b=10

def line(x):

return x+b

b=1return line

my_line=line_out()

print(my_line(5)) #6

line和b構成了閉包

再來乙個例子

def line_out(a,b):

def line(x):

return a*x**2+b

return line

line1=line_out(1,2) #x^2+2

line2=line_out(2,3) #2x^2+3

def decorate(old_func):

def new_func(a,b):

print("input",a,b)

return old_func

return new_func

@decorate

def add(a,b): #將函式作為引數傳遞給decorate( )

return a+b

@decorate

def divide(a,b):

return a-b

if __name__=="__main__":

print(add(1,2)) #add=decorate(add)

#add(1,2)

print(divide(1,2))

裝飾器也可以帶參,定義和@處加引數即可

裝飾類:

def decorate_class(someclass):

class new_class(object):

def __init__(self,age):

self.total_display = 0

def display(self):

self.total_display += 1

print("total dispay:",self.total_display)

return new_class

@decorate_class

class bird:

def __init__(self,age):

self.age=age

def display(self):

print("age:",self.age)

if __name__=="__main__":

chicken=bird(3)

for i in range(3):

chicken.display()

結果  :

total display:1

age:3

total display:1

age:3

total display:1

age:3

lambda_sum=lamda x,y:x+y

print(lambda_sum(1,2))

lis=[6,7,3,4]

res=map(lambda x:x+3,lis)  #第二個為可迴圈物件

print(list(res)) #[9,10,6,8]

或:

lis1=[1,3,5,6]

lis2=[1,3,5,6]

def add(x,y):

return x+y

res=map(add,lis1,lis2) #2,6,10,12

def larger(a):

if a>100:

return true

else:

return false

for i in filter(larger,[1,101,99,20]):

print(i) #101

from functools import reduce

lis=[1,2,3,4,5]

res=reduce(lambda x,y:x+y,lis) #函式累進的作用於各個引數

print(res) #15

生成器: gen=(x for x in range(3))

列表:lis=[x**2 for x in range(3)]

x1=[1,2,3,4]

y1=[2,3,4,5]

lis=[x**2 for (x,y) in zip(x1,y1) if y>4]

詞典: dic=

print(dic)  # 

python基礎學習筆記(五)

字串基本操作 所有標準的序列操作 索引 分片 乘法 判斷成員資格 求長度 取最小值和最大值 對字串同樣適用,前面已經講述的這些操作。但是,請注意字串都是不可變的。字串的方法 字串從string 模組中 繼承 了很多方法,這裡只介紹一些特別有用的。1 find find 方法可以在乙個較長的字串中查詢...

python 基礎學習筆記(8) 裝飾器

裝飾器 裝飾器和閉包有很大的聯絡。有時你需要在不改變源 的情況下修改已經存在的函式。裝飾器的運用可以提高效率,減少重複的 裝飾器的實質是乙個函式。它把乙個函式作為輸入並且返回另乙個函式。在裝飾器中,通常使用下面這些python技巧 1.args 和 kwargs 2.閉包 3.作為引數的函式 例函式...

python基礎學習 裝飾器

學習python時,我提出過如下問題 1.裝飾器是什麼?2.乙個 符號 乙個函式名就是乙個裝飾器了?3.什麼時候要用到這是神器的工具?到底怎麼理解 怎麼應用裝飾器,在本文中概括一下自己的理解。一 先舉栗子,逐層分析 1 獲取func函式的執行時間 2 import time 3 4 這是乙個計時函式...