Python 閉包函數

  閉包函數:

  閉:指的是定義在函數內部的函數

  比如手機是閉包函數(內層函數),被手機包裝盒 (外層函數) 包裹起來,

  手機可以使用包裝盒中的東西,內層函數可以引用外層函數的名字。

  閉包函數:定義在函數內部的函數,並且該函數包含對外部函數作用域中名字的引用,該函數就稱爲閉包函數。

  注意:該函數的作用域在定義階段就定義死了,與調用位置無關

  閉包函數是 函數嵌套、函數對象、名稱空間與作用域 結合體。

  基本形式:

  def outer():

  name ='egon'

  def inner():

  print('my name is %s' %name)

  return inner

  # print(outer())

  f=outer()

  f()

  閉包的小應用:

  #爬蟲:模擬訪問百度

  import requests

  def get(url):

  response = requests.get(url)

  if response.status_code == 200:

  print(response.text)

  get('https://www.baidu.com/')

  get('https://www.baidu.com/')

  get('https://www.baidu.com/') #問題:每次訪問百度,都要調用一次,填一次地址

  # 解決辦法:用閉包函數

  def outter():

  url = 'https://www.baidu.com/' #問題:把地址定死了,

  def get():鄭州婦科醫院 http://www.zyfuke.com/

  response = requests.get(url)

  if response.status_code == 200:

  print(response.text)

  return get

  baidu = outter() #baidu --->get

  baidu()

  # 改進:

  def outter(url):

  def get():

  response = requests.get(url)

  if response.status_code == 200:

  print(response.text)

  return get

  baidu = outter('https://www.baidu.com/') #baidu --->get

  taobao = outter('https://www.taobao.com/') #taobao --->get

  baidu() #專門調百度

  taobao() #專門調淘寶


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章