目錄迭代器
生成器函式的引數型別
傳遞不可變型別引數,不會影響引數本身
傳遞可變型別引數,會影響引數本身
命名空間
命名空間載入順序:內建-->全域性-->區域性
命名空間查詢順序:區域性-->全域性-->內建
作用域全域性變數和區域性變數
global 關鍵字可以將區域性變數變成乙個全域性變數
格式: global 變數名稱
nonlocal 關鍵字可以修改外層(非全域性)變數
python內建函式
ret = max(1,2,3)
print(ret)
res = max(1,2,-3,key=abs)
print(res)
lst = [,, ]
def price_func(dic):
return dic["price"]
ret = max(lst,key=price_func)
print(ret)
lst = [1,2,3,4,5]
def pingfang(x):
return x * x
ret = map(pingfang,lst)
for i in ret:
print(i)
lst = [1,2,3,4,5,6,7,8,9,10]
def ou_num(num):
if num%2==1:
return true
ret = filter(ou_num,lst)
for i in ret:
print(i)
a = [1,2,3]
b =["a","b","c"]
ret = zip(a,b)
for i in ret:
print(i)
匿名函式
語法:變數名= lambda 引數:表示式(block)
引數:可選,通常以逗號分隔的變數表示式形式,也就是位置引數
表示式:不能包含迴圈、return,可以包含 if...else...
add = lambda x,y:x+y
print(add(1,2))
閉包# 閉包函式的例項
# outer是外部函式 a和b都是外函式的臨時變數
def outer( a ):
b = 10
# inner是內函式
def inner():
#在內函式中 用到了外函式的臨時變數
print(a+b)
# 外函式的返回值是內函式的引用
return inner
裝飾器
裝飾器:本質上是乙個python函式,它可以讓其他函式在不需要做任何**變動的前提下增加額外功能,經常用於有切面需求的場景,比如:插入日誌、效能測試、事務處理、快取、許可權校驗等場景
def print_execute_time(func):
from time import time
# 定義巢狀函式,用來列印出裝飾的函式的執行時間
# 定義開始時間和結束時間,將func夾在中間執行,取得其返回值
start = time()
func_return = func(*args, **kwargs)
end = time()
# 列印方法名稱和其執行時間
print(f'() execute time: s')
# 返回func的返回值
return func_return
# 返回巢狀的函式
# 定義乙個隨機數求和的方法,傳入引數是隨機數的個數,加上剛才定義的裝飾器
@print_execute_time
def cal_sum(size):
from random import random
li = [random() for i in range(size)]
return sum(li)
cal_sum(1000000)
#isinstance(obj,iterable)
print(isinstance(,list))
print(isinstance(,iterable)) #true
print(isinstance(123,iterable)) #false
for i in 123:
pass
__iter__
和__next__
方法
iter()函式把可迭代物件中的迭代器取出來,內部呼叫__iter__方法
next()函式通過迭代器獲取下一位置的值,內部呼叫__next__方法
string = "hello"
# for i in string:
# print(i)
#獲取迭代器
iter1 = iter(string)
#使用next()函式獲取元素
print(next(iter1))
print(next(iter1))
print(next(iter1))
print(next(iter1))
print(next(iter1))
print(next(iter1))
迭代器實現斐波那契數列
class fib:
def __init__(self,n):
self.n = n #第幾個數
self.a = 1
self.b = 1
self.index = 0 #記錄位置
def __iter__(self):
return self
def __next__(self):
if self.index
lst = [i for i in range(1,10)]
print(lst)
iter1 = iter(lst)
print(next(iter1))
print(next(iter1))
g = (i for i in range(1,10))
print(g)
print(next(g))
print(next(g))
print(list(g))
python 函式高階 python 函式高階
形參角度 萬能引數 動態接收位置引數 args 動態接收關鍵字引數 kwargs 的魔性用法 函式定義時 代表聚合。他將所有的位置引數 聚合成乙個元組,賦值給了args 函式定義時 將所有的關鍵字引數聚合成乙個字典中,將這個字典賦給了 kwargs 和 在函式的呼叫時 代表打散 僅限關鍵字引數 de...
Python高階 函式高階
閉包 closure 常規函式中可以在函式的引數中新增引數的預設值來簡化函式的操作,偏函式也可以做到這一點,而且會更加的方便管理函式的操作。通過內建模組functools的partial進行定義和處理 語法結構 新函式名稱 functools.partial 函式名稱,預設賦值引數 例如 全域性函式...
python 函式 高階函式
filter 函式是 python 內建的另乙個有用的高階函式,filter 函式接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter 根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。例如判斷奇偶數 def...