まず、無名関数
Wordの機能を、比較的簡単な関数
- 無名関数の構築
func1 = lambda a,b: a + b
print(func1(1,2))
# 接受一个可切片的数据,返回索引为0与2的对应的元素(元组形式)
func1 = lambda a: (a[0], a[2])
print(func1([0, 1, 2, 3, 4]))
# 写匿名函数,接受两个int参数,将较大的数据返回
func1 = lambda a, b: a if a > b else b
print(func1(9, 6))
第二に、組み込み関数
パイソンは68組み込み関数を提供します
重要:ABS()列挙()フィルタ()マップ()、MAX()分()オープン()範囲()プリント()lenは()リスト()辞書()STR()フロート()は()の組を(逆)ソート()合計()タプル()タイプ()ZIP()DIR()
クラスメソッド()delattr()GETATTR()はhasattr()issubclass()でisinstance()オブジェクト()プロパティ()SETATTR()staticmethod()スーパー( )
次要:すべての()は()()呼び出し可能()CHR()錯体()divmod()のeval()のexec()形式()のfrozenset()グローバル()ハッシュ()ヘルプ()ID()入力(バイト)、INT()ITER()地元の人々()次の()10月()ORD()POW()はrepr()ラウンド()
- ケーシングストリングのストリッピングのeval()
print(eval('2 + 4')) # 6
print(eval('[1, 2, 3]')) # [1, 2, 3]
print(eval('[1, 2], [3, 4]')) # ([1, 2], [3, 4])
print(eval("{'name': 'jason', 'age': 18}, [1, 2, 3], 'aloha'")) # ({'name': 'jason', 'age': 18}, [1, 2, 3], 'aloha')
- オブジェクトを呼び出すことができるかどうかを判定する呼び出し可能
name = 'jason'
def func(a):
for i in range(a):
return i
print(callable(name)) # False
print(callable(func)) # True
- int型フロートコンプレックス
print(int(3.7)) # 3
print(float(3.5)) # 3.5
print(complex(1, 2)) # (1+2j)
- ビン10月の六角
# bin 十进制转化成二进制
print(bin(58)) # 0b111010
# oct 十进制转化成八进制
print(oct(857)) # 0o1531
# hex 十进制转化成十六进制
print(hex(15)) # 0xf
# divmod 计算除数和被除数的值,以元组形式返回
print(divmod(10, 3)) # (3, 1)
# round 保留浮点数的小数位数
print(round(3.1415926, 2)) # 3.14
# pow
print(pow(2, 3)) # 8
print(pow(2, 3, 5)) # 3 # 2 ** 3 % 5
# bytes
s1 = '三上悠亚'
b1 = s1.encode('utf-8')
b2 = bytes(s1, encoding='utf-8')
print(b1) # b'\xe4\xb8\x89\xe4\xb8\x8a\xe6\x82\xa0\xe4\xba\x9a'
print(b2) # b'\xe4\xb8\x89\xe4\xb8\x8a\xe6\x82\xa0\xe4\xba\x9a'
# ord 输入字符,找到该字符编码的位置
print(ord('b')) # 98
print(ord('森')) # 26862 # Unicode
# chr 输入位置,找字符
print(chr(98)) # b
print(chr(26862)) # 森 # Unicode
# repr 返回一个对象的string 形式
s1 = '三上悠亚'
print(s1) # 三上悠亚
print(repr(s1)) # '三上悠亚'
msg = '我爱%r' % s1
print(msg) # 我爱'三上悠亚'
# all any
# all 可迭代对象中全部为True,才返回True
list1 = [1, 2, [1, 2], 'jason', True, '']
list2 = [1, 2, [1, 2], 'jason', True]
print(all(list1)) # False
print(all(list2)) # True
# any 可迭代对象中有一个True ,就返回True
list3 = [False, '', 1]
list4 = [False, '']
print(any(list3)) # True
print(any(list4)) # False
# abs 绝对值
print(abs(-5)) # 5
# sum 求一个可迭代对象的和
l1 = [i for i in range(101)]
print(sum(l1)) # 5050
print(sum(l1, 5)) # 5055 # 设置初始值5
# reversed 返回的是翻转的新的迭代器,不会修改原列表
l1 = [i for i in range(10)]
l2 = reversed(l1)
print(list(l2)) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
# 区别于reverse()
list1 = [i for i in range(5)]
list1.reverse()
print(list1)
# zip 拉链方法,以最短的结束
l1 = [1, 2, 3, 4, 5]
l2 = ['jason', 'carly', 'dog']
l3 = 'aloha'
obj = zip(l1, l2, l3)
print(list(obj)) # [(1, 'jason', 'a'), (2, 'carly', 'l'), (3, 'dog', 'o')]
- 最小最大
l1 = [32, 45, 77, 35, 75, -9, -34]
print(min(l1)) # -34
print(min(l1, key=abs)) # -9
# 凡是可以加key的,它会自动的将可迭代对象中的每个元素按照顺序传入key对应的函数中。
# 以返回值比较大小
dic = {'a': 3, 'b': 2, 'c': 1}
# 求出值最小的键值对
print(min(dic)) # a # min默认按照字典的键去比较大小
def func(k):
return dic[k]
print(min(dic, key=func)) # c
# print(min(dic, key=lambda a: dic[a]))
list1 = [('jason', 24), ('carly', 20), ('dog', 2)]
print(min(list1)) # ('carly', 20)
def func(li):
for i in li:
return i[-1]
print(min(list1, key=lambda i: i[-1]))
- ソートソートは、元のリストの順序を変更することはありません
list1 = [('jason', 96), ('carly', 80), ('dog', 66)]
print(sorted(list1, key=lambda x: x[-1])) # 默认从低到高
print(sorted(list1, key=lambda x: x[-1], reverse=True)) # 从高到低
- モードをスクリーニングフィルタリストの内包表記
li = [1, 2, 6, 3, 5, 9, 12, 7]
# print([i for i in li if i > 5] # [6, 9, 12, 7] # 返回的是列表
ret = filter(lambda x: x > 5, li) # 返回的是迭代器
print(list(ret))
- 式の周期パターンをリスト派生マップ
li = [1, 4, 9, 16, 25, 36]
print([i**2 for i in range(1, 6)]) # 返回的是列表
ret = map(lambda x: x**2, range(1, 6)) # 返回的是迭代器
print(list(ret))
- 減らします
from functools import reduce
def func(x, y):
return x + y
result = reduce(func, range(1, 101))
print(result)
第三に、閉鎖
- クロージャは何ですか?
1クロージャネストされた関数にのみ存在する
非大域変数関数(使用)の内側層、外側層2の基準関数を、それがクロージャを形成します。
非グローバル変数が参照され、また、自由変数として知られている、自由変数は、内部機能との結合関係を生成します
メモリ内の自由変数が消えることはありません - クロージャは何の効果がありますか?
データのセキュリティを確保
def func():
list1 = []
def aver(new_number):
list1.append(new_number)
result = sum(list1) / len(list1)
return result
return aver
av = func()
print(av(10))
print(av(12))
print(av(17))
# 如何判断闭包?
print(av.__code__.co_freevars) # ('list1',)
- クロージャを確認する方法?
print(av.__code__.co_freevars)