溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python 閉包函數(shù)

發(fā)布時(shí)間:2020-05-22 11:46:15 來源:網(wǎng)絡(luò) 閱讀:155 作者:ckllf 欄目:編程語言

  閉包函數(shù):

  閉:指的是定義在函數(shù)內(nèi)部的函數(shù)

  比如手機(jī)是閉包函數(shù)(內(nèi)層函數(shù)),被手機(jī)包裝盒 (外層函數(shù)) 包裹起來,

  手機(jī)可以使用包裝盒中的東西,內(nèi)層函數(shù)可以引用外層函數(shù)的名字。

  閉包函數(shù):定義在函數(shù)內(nèi)部的函數(shù),并且該函數(shù)包含對(duì)外部函數(shù)作用域中名字的引用,該函數(shù)就稱為閉包函數(shù)。

  注意:該函數(shù)的作用域在定義階段就定義死了,與調(diào)用位置無關(guān)

  閉包函數(shù)是 函數(shù)嵌套、函數(shù)對(duì)象、名稱空間與作用域 結(jié)合體。

  基本形式:

  def outer():

  name ='egon'

  def inner():

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

  return inner

  # print(outer())

  f=outer()

  f()

  閉包的小應(yīng)用:

  #爬蟲:模擬訪問百度

  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/') #問題:每次訪問百度,都要調(diào)用一次,填一次地址

  # 解決辦法:用閉包函數(shù)

  def outter():

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

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

  response = requests.get(url)

  if response.status_code == 200:

  print(response.text)

  return get

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

  baidu()

  # 改進(jìn):

  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() #專門調(diào)百度

  taobao() #專門調(diào)淘寶


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI