函式名的運用,裝飾器語法糖的運用

2022-04-25 08:01:08 字數 2630 閱讀 9743

1.函式名就是函式的記憶體位址

2.函式名可以作為變數

3.函式名可以作為函式的引數

4.函式名還可以當做函式的返回值

5.函式名可以作為容器型別的元素(列表中的乙個元素)

globals()   #作用是  返回全域性變數的乙個字典

locals() # 返回當前位置的區域性變數的字典

def

func1():

a =1b = 2

print

(globals())

print(locals()) #

func1()

#, '__builtins__': , '__file__':

'g:/騎士計畫/2018-8-17/8-17草稿.py', '__cached__': none, 'lis': [1, 2, 3, 4], 'func1': }

#

判斷這個函式是否形成了閉包,用    函式名.__closure__       來進行判斷

def

wraaper():

name = '

alex

'def

inner():

print

(name)

print(inner.__closure__) #

輸出結果不是none,就說明形成了閉包

inner()

return

inner

wraaper()

輸出結果#

(,)alex

a = "

alex

"def

func1(b):

#a = "alex"    #即相當於在函式內部定義了乙個變數a = "alex」

deffunc2():

print

(b)

print(func2.__closure__

) func2()

func1(a)  #執行時將外部的變數a載入到函式內

#輸出結果為(,)

alex

#所以這種情況是乙個閉包

可迭代物件定義:物件內部含有__iter__方法的就是可迭代物件。(str,list,dict,tuple,tange())

而當可迭代物件簽訂了可迭代協議就形成了迭代器

迭代器定義:內部含有__iter__和__next__的方法就是迭代器。即存在__next__的方法就是迭代器

1.可迭代物件不能直接取值,而迭代器可以直接取值

2.迭代器非常節省記憶體,

3.迭代器每次只能去乙個值

4,迭代器是單向的,一直到底

1.判斷__iter__是否在這個物件裡

lis = [1,2,3]

print("

__iter__

"in dir(lis)) #

返回結果為true則說明該物件是可迭代物件

dir()  顯示出你這個引數的所有方法,裝在乙個列表裡

2.from collections import iterable     在 檔案(colletions) 匯入 這個  可迭代的(iterable)

from collections import iterator   在檔案(colletions)匯入  這個    迭代器( iterator)  (自我理解,非專業術語)

from collections import

iterable

from collections import

iterator

print(isinstance('

alex

',iterable)) #

true

print(isinstance('

alex

',iterator)) #

false 是否是迭代器

#isinstance() 判斷型別,即「alex」是不是可迭代物件 (自我解釋,非專業)

1.lis.__iter__()

2.iter(lis)

#

lis = [1, 2, 3] # 可迭代物件

## ite1 = lis.__iter__() # 迭代器

#ite1 = iter(lis) # 迭代器

#print(ite1)

lis = [1,2,3]

l1 = lis.__iter__

()print

(l1)

print(l1.__next__()) #

1print(next(l1)) #

2

例題,用while迴圈模擬出for迴圈的過程(了解,)

#

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...