1.函式名就是函式的記憶體位址
2.函式名可以作為變數
3.函式名可以作為函式的引數
4.函式名還可以當做函式的返回值
5.函式名可以作為容器型別的元素(列表中的乙個元素)
globals() #作用是 返回全域性變數的乙個字典
locals() # 返回當前位置的區域性變數的字典
def判斷這個函式是否形成了閉包,用 函式名.__closure__ 來進行判斷func1():
a =1b = 2
(globals())
print(locals()) #
func1()
#, '__builtins__': , '__file__':
'g:/騎士計畫/2018-8-17/8-17草稿.py', '__cached__': none, 'lis': [1, 2, 3, 4], 'func1': }
#
defwraaper():
name = '
alex
'def
inner():
(name)
print(inner.__closure__) #
輸出結果不是none,就說明形成了閉包
inner()
return
inner
wraaper()
輸出結果#
(,)alex
a = "可迭代物件定義:物件內部含有__iter__方法的就是可迭代物件。(str,list,dict,tuple,tange())alex
"def
func1(b):
#a = "alex" #即相當於在函式內部定義了乙個變數a = "alex」
deffunc2():
(b)
print(func2.__closure__
) func2()
func1(a) #執行時將外部的變數a載入到函式內
#輸出結果為(,)
alex
#所以這種情況是乙個閉包
而當可迭代物件簽訂了可迭代協議就形成了迭代器
迭代器定義:內部含有__iter__和__next__的方法就是迭代器。即存在__next__的方法就是迭代器
1.可迭代物件不能直接取值,而迭代器可以直接取值
2.迭代器非常節省記憶體,
3.迭代器每次只能去乙個值
4,迭代器是單向的,一直到底
1.判斷__iter__是否在這個物件裡
lis = [1,2,3]dir() 顯示出你這個引數的所有方法,裝在乙個列表裡print("
__iter__
"in dir(lis)) #
返回結果為true則說明該物件是可迭代物件
2.from collections import iterable 在 檔案(colletions) 匯入 這個 可迭代的(iterable)
from collections import iterator 在檔案(colletions)匯入 這個 迭代器( iterator) (自我理解,非專業術語)
from collections import1.lis.__iter__()iterable
from collections import
iterator
print(isinstance('
alex
',iterable)) #
true
print(isinstance('
alex
',iterator)) #
false 是否是迭代器
#isinstance() 判斷型別,即「alex」是不是可迭代物件 (自我解釋,非專業)
2.iter(lis)
#lis = [1, 2, 3] # 可迭代物件
## ite1 = lis.__iter__() # 迭代器
#ite1 = iter(lis) # 迭代器
#print(ite1)
lis = [1,2,3]例題,用while迴圈模擬出for迴圈的過程(了解,)l1 = lis.__iter__
(l1)
print(l1.__next__()) #
1print(next(l1)) #
2
#iter1 = s1.__iter__()##
while 1:
#try:
#print(iter1.__next__())
#except stopiteration: # stopiteration報錯原因
#break #遇到抱歉就結束迴圈
先了解。
相當於
裝飾器語法糖運用
def create people print 女媧真厲害,捏個泥吹口氣就成了人!def a func def b print 灑點水 func return b ret a create people ret 通過裝飾器語法等同於 def a func def b print 灑點水 func r...
函式名的運用
def func print 呵呵 print func 結果 def func print 呵呵 print func a func 把函式當成乙個變數賦值給另乙個變數 a 函式呼叫def func print 呵呵 def func print 呵呵 def func print 呵呵 def ...
運用staticmethod裝飾器的簡單方式
from math import sqrt class object def init self,a,b,c self.a a self.b b self.c c staticmethod defis valid a,b,c return a b c and b c a and a c b defp...