Python每日3題-為什麼函數名字可以當做參數用?

2020-12-06 騰訊網

每日3題是麥叔的面試系列專題之一,每天包括初級,中級,高級難度題目各一道。

每日3題,100天之後成為大牛!

如果有不明白的,給麥叔留言。

[Easy] 為什麼函數名字可以當做參數用?

思考30秒再往下翻...

Python中一切皆對象,函數名是函數在內存中的空間,也是一個對象

[Normal] 函數裝飾器有什麼作用?

思考30秒再往下翻...

裝飾器本質上是一個callable object,它可以在讓其他函數在不需要做任何代碼的變動的前提下增加額外的功能。裝飾器的返回值也是一個函數的對象,它經常用於有切面需求的場景。比如:插入日誌,性能測試,事務處理,緩存。權限的校驗等場景,有了裝飾器就可以抽離出大量的與函數功能本身無關的雷同代碼並發並繼續使用。

[Hard] 生成器,迭代器的區別?

思考30秒再往下翻...

迭代器是遵循迭代協議的對象。用戶可以使用 iter() 以從任何序列得到迭代器(如 list, tuple, dictionary, set 等)。另一個方法則是創建一個另一種形式的迭代器 —— generator 。要獲取下一個元素,則使用成員函數 next()(Python 2)或函數 next() function (Python 3) 。當沒有元素時,則引發 StopIteration 此例外。若要實現自己的迭代器,則只要實現 next()(Python 2)或 ()( Python 3)

生成器(Generator),只是在需要返回數據的時候使用yield語句。每次next()被調用時,生成器會返回它脫離的位置(它記憶語句最後一次執行的位置和所有的數據值)

區別:生成器能做到迭代器能做的所有事,而且因為自動創建iter()和next()方法,生成器顯得特別簡潔,而且生成器也是高效的,使用生成器表達式取代列表解析可以同時節省內存。除了創建和保存程序狀態的自動方法,當發生器終結時,還會自動拋出StopIteration異常。

官方介紹:https://docs.python.org/3/tutorial/classes.html#iterators

中文:https://docs.python.org/zh-cn/3/tutorial/classes.html#iterators

支持麥叔,請點在看,謝謝!

相關焦點

  • python入門基礎之lambda匿名函數詳解
    lambda作為一個表達式,定義了一個匿名函數,上例的代碼x,y為入口參數,x+y為函數體。在這裡lambda簡化了函數定義的書寫形式。python允許用lambda關鍵字創造匿名函數。匿名是不需要以標準的方式來聲明,比如說使用 def 語句。(除非賦值給一個局部變量,這樣的對象也不會在任何的名字空間內創建名字,上面的例子中會創建名字。)
  • Python基礎教程(一) - 函數和函數式編程
    前面使用過很多print()來進行列印,這是python提供的內建函數,你也可以自己創建函數,這叫做用戶自定義函數。創建函數你可以定義一個由自己想要功能的函數,用def語句來創建,標題行由def關鍵字,函數的名字,以及參數的集合(如果有的話)組成。
  • Python 爬蟲面試題 170 道
    最近在刷面試題,所以需要看大量的 Python 相關的面試題,從大量的題目中總結了很多的知識,同時也對一些題目進行拓展了,但是在看了網上的大部分面試題都有這幾個問題:有些部分還是 Python2 的代碼回答的很簡單,關鍵的題目沒有點出為什麼
  • Python 爬蟲面試題 170 道:2019 版
    引言最近在刷面試題,所以需要看大量的 Python 相關的面試題,從大量的題目中總結了很多的知識,同時也對一些題目進行拓展了,但是在看了網上的大部分面試題不是很滿意。51.json 序列化時,可以處理的數據類型有哪些?
  • PTA函數題之縮寫詞滿分題解(Python3)
    例如,CPU是短語「central processing unit」的縮寫,本題需要你將輸入的短語轉化為縮寫詞。函數接口定義:acronym(phrase);phrase是短語參數,返回短語的縮寫詞裁判測試程序樣例:/* 請在這裡填寫答案 */phrase=input()print(acronym(phrase))輸入樣例:central processing unit
  • python基礎課程 第5章 奇妙的內建函數
    今天我們來講講 python 的常用內建函數,以便於大家在日常編程過程中遇到類似的場景可以直接拿來使用,不用再重複自己了。python 內建函數(python自帶的函數) 數量加起來大概有70多個,今天我們主要講常用的一些,至於更多的內容可以在以後的基礎教程裡慢慢學到。
  • 每日一題20200610|函數|每日|微積分
    變限積分函數性質(1)前言(1)微積分基本定理給我們揭示了連續函數及其變限積分函數的相關性質。那麼如果將條件減弱, f(x)僅在[a,b]上可積, 它的變限積分函數又有什麼樣的性質呢?(2)本題的證明需要關注以下幾點:從條件考慮, 可積函數有什麼樣的性質?提示:可積的必要條件。
  • Python2 已終結,入手Python 3,你需要這30個技巧
    你可以把讀這篇文章當做工作間隙的小憩,而且我保證你學到的東西會跟工作時一樣多。1. 使用 Python3如果你關注 Python 的話,應該會知道 Python 2 已經於今年(2020 年)1 月 1 日正式棄用了。這份教程的很多例子都是只支持 Python 3 的,如果你還在用 Python 2.1,那也是時候與時俱進了。
  • Python面試題推薦:什麼是lambda函數?
    陝西優就業小編今天送上一盤Python面試題,大家來學習下吧!別忘了自己整理相關Python知識,祝大家面試順利!Python允許你定義一種單行的小函數。定義lambda函數的形式如下:labmda 參數:表達式lambda函數默認返回表達式的值。你也可以將其賦值給一個變量。
  • python高階函數:map、filter、reduce的替代品
    什麼是高階函數?高階函數是一種將函數作為參數,或者把函數作為結果返回的函數,map函數、sorted函數就是高階函數的典型例子。map函數在小編以前的文章中做過相應的知識分享。sorted函數是python的內置函數,它的可選參數key用於提供一個函數,它可以將函數應用到各個元素上進行排序。
  • 魅力python——添加新元素、刪除元素、替換元素
    添加新元素我們假設在一個班上有3個男生Boa、Bob、Boc,假設現在又轉來一個美眉Alice到班上,怎麼把Alice的名字添加到班級名冊裡邊呢?如果Alice說她最美,想把名字添加到第2個位置,那麼append()就不能完成任務了,我們需要用到另一個list插入函數insert()。insert()有兩個參數,第一個參數是索引號,第二個參數是新元素。
  • softmax 損失函數 & 參數更新詳解
    對參數求偏導推導及更新要點回歸:邏輯回歸二分類用sigmoid變換成預測單個「概率」,損失函數為交叉熵,用梯度下降求解參數wbsoftmax多分類用softmax變換成多個「概率」,損失函數和求解思路類似相比(−∞,+∞)範圍內的數值結果,概率天然具有更好的可解釋性;我們獲得了K個類別(−
  • 不要怕參數,更不要怕參數多,解含參二次函數壓軸題
    不要怕參數,更不要怕參數多,解含參二次函數壓軸題在有些地區的中考壓軸題中,二次函數幾乎成為命題的首選,原因當然是它能綜合的內容比較多,本身也足夠複雜。較為簡單的情況下,會給出二次函數解析式,如果含有參數,第一小問也能給出條件解決;較為複雜的情況下,參數無法消去,得一直留著。針對後者,變化較多,難度也較大。
  • Python每天一分鐘:lambda表達式 (匿名函數)及用法詳解
    lambda 表達式可以用來替換局部函數(感興趣的讀者可以自行查閱「局部函數」),下面為大家演示lambda表達式的具體用法。在 lambda 關鍵字之後、冒號左邊為參數列表,可不帶參數,也可有多個參數。若有多個參數,則參數間用逗號隔開,冒號右邊為 lambda 表達式的返回值。
  • Python編程題:兩個日期間的天數統計(附代碼)
    題目一解題思路:將兩個日期格式化成time模塊中的標準時間結構struct_time,缺少值用0補齊利用time模塊函數分別計算兩個日期到時間戳(指格林威治時間1970年01月01日00時00分00秒)的總秒數將
  • python動態添加類對象成員:變量、函數
    中給類對象新增變量或者方法並不需要對原始類定義進行重新修改,隨時都可以給類對象新增成員。給類對象動態添加方法/函數注意:初學者在理解以下內容之前,需清楚python類中 self 參數的含義和作用,可自行搜索查閱:Python中self的用法!
  • 寫Python 代碼不可不知的函數式編程技術
    頭等函數在 Python 中,函數是「頭等公民」(first-class)。也就是說,函數與其他數據類型(如 int)處於平等地位。因而,我們可以將函數賦值給變量,也可以將其作為參數傳入其他函數,將它們存儲在其他數據結構(如 dicts)中,並將它們作為其他函數的返回值。
  • Python函數的五種參數類型
    函數調用傳入三個參數時,按實參與形參的位置對應關係列印三個實參的值;函數調用傳入兩個參數時,按實參與形參的位置對應關係列印兩個實參的值和函數定義的一個默認形參值。【注】函數定義默認參數時,默認參數的位置必須在最後,否則報錯。大家可以自己去測試下。
  • Python中的函數參數
    # 必需參數# 默認參數# 關鍵字參數# 不定長參數# 必需參數:必需參數須以正確的順序傳入函數def must(m):# 調用時必須傳入一個參數print("必須傳入參數",m)return# 調用函數,不傳入參數會報錯print(must())
  • Python函數參數的使用方法
    在一些特殊情況下,函數雖然定義了形參,但在調用函數時可以不用傳入實參,這就是默認參數的作用。默認參數的意思就是給函數的形參設置一個默認值,如果在調用函數時沒有傳入實參,那麼這個默認值將會作為實參傳遞給函數。默認參數可以簡化函數的調用,調用者不需要傳入過多的實參。給函數設置默認參數時要遵循該參數具有共性和不變屬性的規則,在特殊情況下可以用傳入的實參代替默認值。