'''內建函式
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分析法。思想 從語法的開始符號出發,試探使用不同產生式,尋找匹配於輸入符號串的推導。或者說,從對應文法開始符號...