1.匿名函數
匿名函數只能構建簡單的函數,一句話函數
def func(x,y):
return x + y
print(func(1, 2))
匿名函數構建
func = lambda x,y: x + y
print(func(1,2))
匿名函數最經常使用的就是與內置函數結合使用
2.內置函數
1.eval 剝去字符串的外衣,返回裏面的本質 => 有值
exce 代碼流,過程
s1 = "{1: 'alex'}"
s2 = '1 + 3'
print(eval(s1))
print(eval(s2))
s3 = '''
for i in range(3):
print(i)
'''
exec(s3)
2.hash() 哈希值
print(hash(123214134)) => 整型值是它自己
print(hash('fkljdsaklgjdfs')) => 可變的值
3.help() 詳細說明
print(help(str.count))
4.callable() 是否可執行 **
def a():
pass
b = 3433
print(callable(a))
print(callable(b))
5.int **
print(int(3.14)) 取整
print(int('123')) 數據類型轉換
6.print(bin(100)) 將十進制轉化成二進制。 **
print(oct(10)) 將十進制轉化成八進制字符串並返回。
print(hex(17)) 將十進制轉化成十六進制字符串並返回。 **
print(hex(15)) 0xf
print(hex(31)) => 0x1f
print(hex(47)) 0x2f
7.divmod() 計算除數與被除數的結果,返回一個包含整除的商與餘數的元祖(a//b,a%b) => 分頁用到
8.round() 保留小數的有效位數
print(round(3.1485926,2))
9.pow(3,3,2) => 3**3%2
10.ord() 輸入字符尋找其在unicode的位置
11.chr() 輸入數字找出其對應的字符
12.repr 原形畢露
print('太白')
print(repr('太白'))
13.all() 可迭代對象元素有一個False,就返回False
any() 可迭代對象元素有一個True,就返回True
1.sep 設定分隔符
end 默認是換行
print(1, 2, sep='|')
print(1, 2, end=' ')
2.file 寫入文件
f = open('log','w',encoding='utf-8')
f.write('寫入文件')
print('寫入文件', file=f)
3.list
li=list("asdf")
print(li) => ["a","s","d","f"]
4.dict
建立字典的集中方式
dic={"key":"value"}
dic["key"]=value
字典推導式
dic=dict(one=1,two=2)
fromkeys("ab",1) => {"a":1,"b":1}
5.abs() 取絕對值
6.sum() 數字相加求和
print(sum([1,2,3,4]))
print(sum([1, 2, 3, 4], 100)) 100爲起始值
*****
7.min 能夠加功能
l1 = [('alex',73), ('武大',35), ('太白',18)] #找年齡最小的元組
print(min(l1)) => 自動比較每一個元祖的第一個元素,若是是數字比大小,若是是字符串則比較第一個字符的ASCII碼
def func(x):
return x[1]
#min會遍歷可迭代對象的元素做爲實參傳給x,返回值是什麼就按照什麼比較最小的,將該元素便是 ('太白', 18) 返回
print(min(l1,key=func))
print(min(l1,key=lambda x: x[1]))
# 練習:
dic = {'a':3,'b':2,'c':1}
# 將dic值最小的鍵返回。
print(min(dic,key= lambda x:dic[x]))
# 將dic值最小的值返回。
print(dic[min(dic,key= lambda x:dic[x])])
dic = {'A':['李業', 67],'b': ['懟哥', 95],'c': ['馮垚', 85]}
# 將成績最低的從屬於的那個列表返回。
print(dic[min(dic,key=lambda x:dic[x][1])])
# 將成績最低的分數返回。
print(dic[min(dic,key=lambda x:dic[x][1])][1])
8.max 同min
9.reversed 對一個可迭代對象進行翻轉,返回的是一個迭代器
s = 'alex'
for i in reversed(s):
print(i)
10.bytes() 編碼
s='太白'
編碼 print(s.encode('utf-8'))
print(bytes(s,encoding='utf-8'))
b = b'\xe5\xa4\xaa\xe7\x99\xbd'
解碼 print(b.decode('utf-8'))
print(str(b, encoding='utf-8'))
11.zip 拉鍊方法,返回一個迭代器
l1=[1,2,3,4]
tu=('a','b','c')
s='python23'
print(list(zip(l1,tu,s)))
12.sorted 排序
l1.sort()
print(l1) => 列表原有的方法
print(sorted(l1))
print(l1) => sorted造成新列表
list1 = [
{'name': 'alex', 'age': 73},
{'name': 'wusir', 'age': 35},
{'name': '太白', 'age': 25},
]
加key => 按某一元素排列
print(sorted(list1))
print(sorted(list1, key=lambda x:x['age'])) => 默認升序
print(sorted(list1, key=lambda x:x['age'],reverse=True)) => reverse,降序
13.filter 生成器表達式的篩選模式,返回一個迭代器器
l1 = [56, 67, 12, 34, 78, 90,]
print([i for i in l1 if i > 60])
print(list(filter(lambda x: x>60,l1))) => 返回值爲True的留下來
lst = [{'id':1,'name':'alex','age':50},
{'id':1,'name':'wusir','age':17},
{'id':1,'name':'taibai','age':16},]
print(list(filter(lambda x:x['age']<30,lst)))
14.map 生成器表達式的循環模式,生成一個迭代器
l1 = [56, 67, 12, 34, 78, 90,]
print([i**2 for i in l1])
print(list(map(lambda x:x**2,l1))) => 注意返回的不是參數,是值
15.from functools import reduce(reduce在python3x中 從內置函數剔除了) 求和,能夠用字符串拼接
print(reduce(lambda x,y: x+y,[1,2,3,4,5]))
print(reduce(lambda x,y: 2*x+y, [1,2,3]))
print(reduce(lambda x,y: x+y, ['alex','s','b']))
3.閉包
def make_average():
l1 = [] =>自由變量
def average(price):
l1.append(price) =>閉包:閉包函數的空間不會隨着函數的結束而消失,被引用的l1變量則不會消失
total = sum(l1)
return total/len(l1)
return average
avg = make_average()
print(avg(100000))
print(avg(110000))
print(avg(120000))
閉包造成的條件:
1.閉包存在於嵌套函數中
2.內層函數對外層函數的全局變量引用 => 自由變量
(參考函數名逐層返回,直至返回到最外層)
判斷一個函數是否是閉包 => 閉包函數有沒有自由變量 print(avg.__code__.co_freevars)
閉包的應用: 保證數據安全,裝置器的本質