1.生成器
1.生成式
"""
生成式就是生成器的簡寫
1)語法一
(表達式 for 變量 in 序列)
說明:表達式 - 任何有結果的語句莉撇,具體的數(shù)據(jù)蔫耽,賦值后的變量摇肌,非賦值的運算表達式等。。胎食。凯肋。
展開成生成器:
- 語法二:
生成器 = (表達式 for 變量 in 序列 if 條件語句 )
"""
2.補充:python中的三目運算符
"""
c,java,js等中的三目運算符:條件語句?表達式1:表達式2(如果條件為真表達式1否則表達式2)
python中的三目運算符: 變量 = 表達式1 if 條件語句 else 表達式 2(判斷條件語句是否為真仑濒,如果是真結果是表達式1撑教,否則表達式2)
"""
# 列表生成式
list1 = list(x for x in range(5))
list2 = [x for x in range(5)]
#字典生成式
dict = dict((x,x*2) for x in range(5))
list3 = [x for j in range(10) for x in range(j)]
print(list3)
list4 = [ True if x % 3 == 0 else False for x in range(1,10)]
list5 = [x for x in range(10) if x % 3==0 ]
print(list4)
print(list5)
2.高階函數(shù)前序
python中聲明函數(shù)就是聲明類型是function的變量,函數(shù)名就是變量名
"""
普通變量能做的事朝墩,函數(shù)都能做
1)用一個變量給另一個變量賦值
2)修改變量的值
3)變量作為序列的元素
4)作為函數(shù)的參數(shù)
5)變量作為函數(shù)的返回值
實參高階函數(shù)(一個函數(shù)的參數(shù)是一個函數(shù))
返回值高階函數(shù)(一個函數(shù)的返回值是一個函數(shù))
"""
3.實參高階函數(shù)
裝飾器 = 實參高階函數(shù) + 返回值高階函數(shù) + 糖語法
1.實參高階函數(shù)
"""
參數(shù)是函數(shù)的函數(shù)就是實參高階函數(shù)
python中內(nèi)置的sorted,max驮履,min以及列表的sort方法都是實參高階函數(shù)
這些函數(shù)中都有一個參數(shù)為key鱼辙,要求傳參的時候傳一個函數(shù)廉嚼。
這個函數(shù)需要一個參數(shù)和一個返回值玫镐,參數(shù)代表序列中的元素倒戏,返回值是比較對象
"""
4.返回值高階函數(shù)
"""author = zhuzhenghong"""
1.返回值高階函數(shù)
"""
函數(shù)的返回是一個函數(shù),這樣的函數(shù)就是返回值高階函數(shù)
返回的是局部函數(shù)才是返回值高階函數(shù)
"""
def operation():
def operation1(*args,char):
sum1 = args[0]
for item in args[1:]:
sum1 = eval(str(sum1) + char + str(item))
return sum1
return operation1
a = operation()
print(a(1,2,3,4,char='+'))
5.閉包
1.什么是閉包
"""
閉包就是一個函數(shù)恐似,這個函數(shù)需要滿足以下兩個條件:
1)函數(shù)的返回值是聲明在這個函數(shù)中的函數(shù)(內(nèi)函數(shù))
2)這個內(nèi)函數(shù)必須使用外函數(shù)中的臨時變量杜跷。(外函數(shù)中的局部變量)
閉包的作用:保存臨時變量的值(函數(shù)調(diào)用結束后,函數(shù)中的數(shù)據(jù)不銷毀)
"""
def func1():
def func2():
print('內(nèi)函數(shù)')
return func2()
6.裝飾器
裝飾器是python的三大神器之一
"""
1.什么是裝飾器:裝飾器本質(zhì)還是一個函數(shù)
裝飾器的作用:在不修改函數(shù)本身的前提下給函數(shù)添加功能
方式一:給函數(shù)添加功能需要修改源代碼
方式二:調(diào)用函數(shù)基礎上添加功能
方式三:裝飾器
語法 :
def 函數(shù)名1(參數(shù)1)
def 函數(shù)名2(args,*kwargs):
體現(xiàn)為原函數(shù)添加功能的代碼
return 函數(shù)2
@函數(shù)名1
聲明需要添加功能的函數(shù)
"""
import time
def time_x(fun1):
def inner(*args,**kwargs):
start = time.time()
fun1(*args,**kwargs)
end = time.time()
return start-end
return inner
@time_x
def fun1(x,y):
print(x+y)
print(fun1(5,6))
def password(fun1):
def inner(*args,**kwargs):
num = input('請輸入密碼:')
if num == '12345':
a = fun1(*args,**kwargs)
return a
else:
return '你無權訪問'
return inner
@password
def print_name():
return 'abc'
print(print_name())