python基礎 lambda 冒泡 閉包和裝飾

2021-08-15 19:06:35 字數 2524 閱讀 8350

# python使用lambda建立匿名函式

foo = [ 18, 9, 22, 17, 24, 8, 12, 27]

print(list(filter(lambda x:x%3==0,foo)))

print(list(map(lambda x:x*2+10,foo)))

import functools,_functools

def max(x,y):

if xy:

return y

else:

return x

print(functools.reduce(max,foo))

# a=int(input("請輸入第乙個運算元:"))

# b=int(input("請輸入第二個運算元:"))

# fun1=input('請輸入乙個函式:')

# fun1=eval(fun1)

# print(fun1(a,b))

#氣泡排序

l=[8,6,4,2]

#公升序 降序

#兩兩相比 小靠前

# 外側迴圈n-1

# 內側迴圈n-1-i

for i in range(len(l)-1):

for j in range(len(l)-1-i):

if l[j]>l[j+1]:

l[j],l[j+1]=l[j+1],l[j]

# 插入乙個數,順序保持

# l.insert(3,7) #方法1,知道插入位置時

for i in range(len(l)):

if l[i]>7:

l.insert(i,7)

print(l) #方法2,不知道插入的位置時

#閉包:

# 如果在乙個內部函式裡,對在外部作用域(但不是在全域性)的變數進行引用,那麼

# 內部函式就被認為是閉包,乙個閉包就是你呼叫了乙個函式a,這個函式返回乙個函式

# b給你,這個返回的函式b就叫做閉包,你在呼叫函式a時傳遞的引數就是自由變數

class student:

pass

num=10

def add(self,a):

global num

self.num=15

return self.num+a

s=student()

print(s.add(5))

print(s.num)

#以上是全域性作用域、區域性作用域。下面講閉包

def a():

def b():

return 15

return b

print(a())

print(a().__name__)

print(a()())

# 以上函式b可以稱為閉包

def a():

num=10

def b():

nonlocal num #nonlocal宣告變數位置是閉包

num=num+5

return num

return b

a=a()

print(a())

def funx(x):

def funy(y):

return x*y

return funy

x=funx(5)

ret=x(6)

ret1=x(7)

print(ret)

print(ret1)

#裝飾器:必須用到閉包

# def test(a,b,fun):

# n=fun(a,b)

# return n

# lam=eval(input("請輸入函式:"))

# t=test(10,5,lam)

# print(t)

def outter(fun): #若變成裝飾器,需要有引數

def inner():

print("inner()----")

fun()

return inner

@outter

def index():

print("index()----")

index() #執行順序:找index(),發現上面有@outter,找outter

# 函式,順序走outter,到print列印內容「inner-----",然後順序執行fun(),即呼叫index()

#此時index為outter的引數fun,列印"index()----",完

#例子:學生穿上衣服,帶上筆記本,出門上課,

def waitao(fun):

print("穿上衣服")

return fun

def bijiben(fun):

print('帶上筆記本')

return fun

@bijiben

@waitao

def student():

print('出門上課')

student()

Python基礎學習篇 lambda

python lambda是在python中使用lambda來建立匿名函式,而用def建立的方法是有名稱的,除了從表面上的方法名不一樣外,python lambda還有哪些和def不一樣呢?1 python lambda會建立乙個函式物件,但不會把這個函式物件賦給乙個識別符號,而def則會把函式物件...

Python基礎語法之 Lambda

表示式及定義 lambda arg1 arg2,arg3,argn expression python核心程式設計 從 python核心程式設計 書本中包含了以上lambda表示式的表述。也就是說在lambda右側的式子中,冒號左邊的為引數值,右邊的為計算表示式。例項說明 1.單層引數求和 現在假設...

Python基礎 lambda與filter用法

1.lambda用法。python使用lambda來建立匿名函式。lambda只是乙個表示式,函式體比def簡單很多。lambda的主體是乙個表示式,而不是乙個 塊。僅僅能在lambda表示式中封裝有限的邏輯進去。lambda函式擁有自己的命名空間,且不能訪問自有引數列表之外或全域性命名空間裡的引數...