Python第四天(函數高級)

  • python閉包:
   def inner(b):
       nonlocal a
       a+=b
       return a
   print(a)
   return inner
result_fn=outer(1)(2)
print(result_fn)
  • 裝飾器:
    所謂的裝飾器,就是不改變原來的函數,再對原函數進行其他的輸出操作
    定義一個原函數的裝飾函數也就是裝飾器
    def zhuang(zz):# 這個函數的參數就代表原函數參數名的意思
    這里的一個函數代表原函數的意思,如果傳參數也就是原函數的參數
       print('我是1之前打印的')
       zz()
       print('我是1之后打印的')
       # return foo
   return foo
@zhuang
# 定義一個原函數:
def foo():
   print('我是原函數:1')
foo()
上面定義的是沒有參數的裝飾器,下面定義一個帶參數的裝飾器:
on=False
def zhuang_1(zz):
   global on
   if on:
       def foo(a,b):
           num=zz(a,b)
           a=num**2
           return a
       return foo
   else:
       return zz
# 定義原函數:
@zhuang_1
def yhs(a,b):
   return a+b
print(yhs(1,9))

兩個裝飾器修飾:
def foo(y):
   def yuan():
       print('我是裝飾函數1')
       y()
       print('我是裝飾函數1')
           # return yuan
   return yuan
def zhuang(yy):
   def zz():
       print('我是外層裝飾函數先顯示我')
       yy()
       print('我是下面的外層函數最后執行我')
   return zz


@foo
@zhuang
def yuanhanshu():
   print('我就是被修飾的原函數')

yuanhanshu()
  • 迭代器:迭代的含義就是遍歷python語法中沒有for 循環的等值語句而,for in 語法的內部調用的就是迭代器;
# a=range(10,100)
# for x in a:# 因為python本身沒有for循環,底層用的是迭代器
#     print(x)
# 獲取迭代器對象就是iter(里面是字符串容器)
it=iter(a)
# print(it)
# 通過迭代器 :迭代器只有一次取一個值直到把容器中中的值取完,報錯的時候就停止迭代,不斷調用迭代器
v=next(it)
  • 生成器:
    自己對迭代器的理解:
    所謂的跌迭代器就是for in底層調用實現的東西,而學迭代器底層實現的原理的目的就是希望自己
    能夠創造出跌代器,能夠實現自己想實現迭代而系統迭代器所不能實現的遍歷
a='hel'
# for i in a:
#     print(i)
it=iter(a)
# print(it)# 此時生成的是迭代對象
# 然后調用next函數來實現層次遍歷
# print(next(it))
def foo(n):
    for i in range(1,n):
        yield i
# print (foo(5))
g=(x+2 for x in foo(10) if x>2 and x%2==0 )# 跌代器的用來生產迭代對象的
print(g)
num=next(g)
print (num)
num=next(g)
print (num)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,915評論 18 139
  • 前言 人生苦多,快來 Kotlin ,快速學習Kotlin! 什么是Kotlin? Kotlin 是種靜態類型編程...
    任半生囂狂閱讀 26,276評論 9 118
  • “幫我買份早餐?” “嗯!” “買好了,給我電話,我把車開下來,你們校門口有警察!” “嗯!” 她現在的冷漠,讓人...
    博雅親子閱讀閱讀 317評論 0 4
  • 別自視清高。 天外有天,人上有人,謙卑是一種態度,更是一種修養。擺正自己的位置,權力是一時的,金錢是身外的,身體是...
    耀磊閱讀 589評論 0 3
  • 前女友再度把我拉黑。 其實,第一次是我把她拉黑。 我一直覺得,分手了就不能做朋友。 后來在一個學習社群里遇到她,她...
    宇楓Sai閱讀 351評論 9 1