真相!Python裡的range原來是…

2021-03-02 自動化軟體測試

        Python入門時候就會提到for循環,自然少不了range()。多數同學會一掠而過。面試過程中,偶爾也會有人問到range底層問題。那麼,今天我們來深入一下range。

首先,Python 2.7* 和 Python 3.*對range的解釋是不同的!(敲黑板…)

 

其次,在Python3.*中,range是一個類(class),不是一個函數!而在Python2.7.*裡面,range僅僅是一個函數。

默認的range(X) (x是一個整數),實際上調用的是range的構造方法。當然也可以更詳細一點兒range(start, end, [step])。Step步長不寫的話就是正整數「1」。

 

再次,由於Python2.7和Python3對range的不同解釋。資(bian)深(tai)考官問題就出來了:

    請說出如下執行結果:  

               print (range(5))                   

               print (type(range(5))           

徘徊在牛A和牛C之間的面試者可以很自(gao)信(ao)地回答:這事情分情況!

如果Python 3.*,那麼range(x)直接出來的並不是一個列表(list)或者元祖(tuple)。

                >>> print (range(5))            

                range(0, 5)                          

                >>> print (type(range(5)))   

                <class 'range'>                    

如果是Python 2.7*,那麼很簡答就是list。

                >>> print (range(5))            

                [0, 1, 2, 3, 4]                       

                >>> print (type(range(5)))  

                <type 'list'>                          

上面的資(bian)深(tai)考題可以變形一下,問下面語句執行結果:

range(5) == [0,1,2,3,4]

那麼機智如同學們,能直接分而治之:Python2.7*結果是True;而Python3.*結果是False。畢竟class和function是不同的嘛。

 

最後,xrange只存在於Python2.*,在Python3.*裡合併進range()了。

人生苦短,我用Python!下次再見!

Testfan社區在今年正式上線了,大家可在社區交流分享技術經驗,並且有測試大牛答疑解惑

社區地址:http://ask.testfan.cn

Testfan為廣大測試人員提供技術交流群:

Selenium自動化測試群:197180340

接口測試開發群:521192806

Appium自動化測試:534129320

LoadRunner性能測試群:495447734

移動APP專項測試群:567341175

RobotFramework群:566755248        

Testfan各個講師們,定時為大家帶來免費公開課

獲取連接:https://testfan.ke.qq.com/#tab=1&category=-1

相關焦點

  • Python的range和xrange
    range函數說明:range([start,] stop[, step]),根據start與stop指定的範圍以及step設定的步長
  • python 列表和元組 還有range
    python 列表和元組主要內容:1. 列表的介紹2.元組和元組嵌套5. range1、列表的介紹列表是python的基礎數據類型之一 ,其他程式語言也有類似的數據類型。 比如JS中的數組、 java中的數組等等。 它是以[ ]括起來,,每個元素用' , '隔開而且可以存放各種數據類型。
  • 【Python面試】 說說Python中xrange和range的區別?
    廢話不多說,開始今天的題目:問:說說Python中xrange和range的區別?答:range()和xrange()都是在循環中使用,輸出結果一樣。range()返回的是一個list對象,而xrange返回的是一個生成器對象(xrange object)。
  • 零基礎學習Python_組織結構和range()函數
    python項目的組織結構一.工程結構先大概了解一下python基本運行機制。Python程序運行時不需要編譯成二進位代碼,而直接從源碼運行程序,簡單來說是,Python解釋器將源碼轉換為字節碼,然後再由解釋器來執行這些字節碼。
  • Python range()的解釋和可視化
    在研究了enumerate()之後,我們現在來研究另一個重要的函數——range()。在本文中,我們將探討range()的功能並突出研究它的用例——您將了解如何在Python中有效地使用range(),了解它的強大的方面和局限性。與range()相關的問題經常會在技術面試中出現——你查看過我們的Python面試問題了嗎?
  • Python的Range()函數(指南)
    range()函數的歷史雖然Python 2的range()和Python3中的range()共享了一個名字,但它們是完全不同的傢伙。事實上,Python 3中的range()只是Python 2中被稱為xrange的函數的重命名版本。
  • python:range沒有實數可以這麼辦
    學習python的大多知道,for i in range(b,e,s)中的b、e、s參數是必須是整數的,但有些時候就是需要小數,怎麼辦?
  • python基礎:range方法在Python2和Python3中的不同
    range()方法是Python中常用的方法, 但是在Python2和Python3中使用方法不同,下面看下它們的不同使用方法。
  • python從零到獨立建設網站,基礎知識,你學過range()函數嗎?
    在python中,如果你確實需要遍歷一個數字序列,內置函數range()會派上用場。它生成算術級數:for i in range(10):print(i)輸出如下:注意:給定的終止數值並不在要生成的序列裡,range(10)會生成10個值,並且是以合法的索引生成一個長度為10的序列。range也可以以另一個數字開頭,或者以指定的幅度增加(甚至是負數,有時這也叫做』步進『)。
  • Python 2.x 與 Python 3.x 的區別
    2.x 和 python 3.x 中是一致的。Python 中的很多方法沒有直接返回列表,而是返回了一個可迭代的 generator (生成器)對象,這便是 python 的惰性求值。在 Python 3 中,range() 是像 xrange() 那樣實現以至於一個專門的 xrange() 函數都不再存在(在 Python 3 中 xrange() 會拋出命名異常)。
  • 數據類型介紹——tuple、list和range對象
    ',2.3In [16]: tuple_1Out[16]: (1, 'python', 2.3)也可以由括號直接定義:In [17]: tuple_2=(1,'python',2.3)In [18]: tuple_2Out[18]: (1,'python',2.3)可以看到上面兩種方式均可得到元組(1
  • Python的range函數與for循環語句
    本篇介紹Python for循環語句和range函數的使用,文中主要討論for循環語句,Python的for循環語句類似於shell或是腳本語言中的foreach循環,可以迭代序列對象。使用range函數可以讓Python的for循環提供類似於傳統的for循環功能。通過本篇的學習,可以達成如下目標。
  • 【Python基礎】python使用python-docx操作word
    1、python-docx庫介紹該模塊兒可以創建、修改Word(.docx)文件;python-docx使用官網:python-docx官網我們在安裝此模塊兒使用的是pip install python-docx,但是在導入的時候是import docx;2、Python讀取Word文檔內容注意:每進行一個操作,必須保存一下,否則等於白做;1)word文檔結構介紹在這裡插入圖片描述2)python-docx
  • Python3的range比Python2的xrange功能更強大
    Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。
  • Python基礎知識--range()函數
    遍歷數字序列,可以使用內置函數range(),可以生成算術級數.1、range的兩種生成方法:(1)range(stop) -> range object,一個結束值,生成從0開始到stop-1的整數數字序列(2)range(start, stop[, step]) -> range object,生成從start到stop-1,步長為step的整數數字序列
  • python和scratch生成隨機不相同的十個數
    先自己生成一個包含1-10不同的10個數列表,然後每次隨機從裡面隨機獲取一個,獲取到後添加到新的列表,接著在原來的列表裡刪除對應的元素,重複10次即可。下面是實現過程。1.先生成一個10個數字的列表,數字從1-10不相同。
  • Python編程入門之 range() 函數
    它產生算術級數序列:>>> for i in range(5):... print(i)...可以讓範圍從另一個數開始,或者指定一個不同的增量(甚至是負的;有時這被稱為「步驟」):range(5, 10)5, 6, 7, 8, 9range(0, 10, 3)0, 3, 6, 9
  • python 算法(8) 兩數和問題
    python 算法(8) 兩數和問題問題問題來自leecode:問題描述:給定一個整數數組 nums
  • python中的隨機數
    random模塊是python中的隨機數模塊,也是比較常用的模塊之一。
  • Python for循環及用法詳解
    >上面代碼中,使用了 range() 函數,此函數是 Python 內置函數,用於生成一系列連續整數,多用於 for 循環中。有關 range() 函數的具體用法,可閱讀《Python range()》一節,值得一提的是,Python 2.x 中除提供 range() 函數外,還提供了一個 xrange() 函數,它可以解決 range() 函數不經意間耗掉所有可用內存的問題。但在 Python 3.x 中,已經將 xrange() 更名為 range() 函數,並刪除了老的 xrange() 函數。