python第八節(函式2)

2021-10-02 14:17:31 字數 4045 閱讀 3809

'''內建函式

map()

zip()'''

'''返回1-10的奇數列表'''

# for i in range(1,10,2):

# print(i)

# li =

# for i in range(1,10):

# if i%2 ==1:

# print(i)

# print(li)

'''filter 過濾'''

defis_odd

(n):

return n %2==

1print

(list

(filter

(is_odd,

range(1

,10))

))'''階乘-->累積 迴圈,遞迴

reduce()函式會對引數序列中元素進行累積'''

from functools import

reduce

defmulti

(x, y)

:return x * y

print

(reduce

(multi,

range(1

,7))

)# 6! [1,2,3,4,5,6]

def

func_name

(x):

return x*x

func_name(1)

'''匿名函式

匿名函式關鍵字 引數:表示式返回值

lambda x:x*x'''

f =lambda x:x*x

print

(f(5))

from functools import

reduce

# def multi(x, y):

# return x * y

# print(reduce(multi, range(1, 7))) # 6! [1,2,3,4,5,6]

print

(reduce

(lambda x,y:x*y,

range(1

,7))

)'''

匿名函式可以直接作為函式返回值'''

deffx

(i,j)

:return

lambda

:i*j

# print(fx(6,6))

res = fx(6,

6)# lambda :i*j = fx(6,6)

print

(res())

'''匿名函式當作引數'''

deftest

(a,b,func)

: res = func(a,b)

# res = a + b

return res

res = test(11,

33,lambda x,y:x+y)

print

(res)

'''高階函式

1.函式名可以作為引數輸入

2.函式名可以作為返回值

只要滿足條件之一-->高階函式

map()

filter()

reduce()

'''

'''不改變原有的符號,但是以絕對值來排序'''

lis =[4

,-2,

3,-1

]lis.sort(key=

abs)

print

(lis)

infor =[,

,]infor.sort(key=

lambda x:x[

'age'])

print

(infor)

# def test():

# print(11111)

# te = test() # name = 1

# # print(id(te))

# # print(id(test()))

# te()

'''閉包

1.在乙個外函式中定義乙個內函式

2.內函式裡運用了外函式的臨時變數

3.外函式的返回值是內函式的引用

'''def

test

(number)

:print

("---1---"

)def

test_in

(number_in)

:# 內部函式

print

(number_in)

print

('---2---'

)return number + number_in # 內部函式運用了外函式的臨時變數number

print

('---3---'

)return test_in # 外函式的返回值是內函式的引用

res = test(20)

# res = test_in

res(25)

in_res = res(25)

# in_res = number + number_in

print

(in_res)

# **讀寫 從上至下

'''實現計算函式執行時間功能

'''import time

'''想要新增驗證功能?一定遵循封閉開放原則

'''def

outer

(flag)

:def

calcu_time

(func)

:print

('我在裝飾噢'

)def

test_in()

: start = time.time(

) func(

) end = time.time(

)print

('spend {}'

.format

(end-start)

)if flag ==

'true'

:print

("驗證成功"

)return test_in

return calcu_time

@outer(flag=

'true'

)# tess2 = calcu_time(test2)

deftest2()

:print

('---test2---'

) time.sleep(

1.5)

# @calcu_time # tess2 = calcu_time(test2)

# def test3():

# print('---test3---')

# time.sleep(2)

# @calcu_time() # tess2 = calcu_time(test2)

# def test4():

# print('---test4---')

# time.sleep(1)

deftest1()

: start = time.time(

)print

('---test1---'

) time.sleep(2)

end = time.time(

)print

('spend {}'

.format

(end-start)

)# test1()

# test2 = calcu_time(test2) # test2 = test_in

test2(

)# test_in()

# test3()

# test4()

'''封閉:已經實現的**塊,則盡量可能不做任何修改

開放:允許擴充套件新的功能

@語法糖

@calcu_time 裝飾器,在不改變源**的情況下新增新的功能

'''

第八節 函式

函式的特性 減少 重複 使程式變得可擴充套件 使程式變得易維護 乙個函式只做一件事情 變數作用域 python 中,程式的變數並不是在哪個位置都可以訪問的,訪問許可權決定於這個變數是在 賦值的。變數的作用域決定了在哪一部分程式可以訪問哪個特定的變數名稱。python的作用域一共有4種,分別是 以 l...

python基礎第八節 函式(上)

五 作業 函式是帶名字的 塊,用於完成具體的工作。要執行函式定義的特定的任務,可呼叫該函式。需要在程式中多次的執行同一項任務時,無序反覆編寫完成該任務的 只需要呼叫執行該任務的函式,讓python執行其中的 即可。你將發現,通過使用函式,程式編寫 閱讀 測試和修復起來更加容易。定義乙個函式,可以使用...

編譯原理 第八節

分為兩大類 自頂向下分析 和 自底向上分析 其中前者又細分為 遞迴下降分析法 包含回溯的遞迴下降分析法和不含回溯的遞迴下降分析法 和非遞迴的 分析法 ll分析法 後者分為算符優先分析法和lr分析法。思想 從語法的開始符號出發,試探使用不同產生式,尋找匹配於輸入符號串的推導。或者說,從對應文法開始符號...