我對編程非常非常陌生,并且從 Python 開始。我大約有三十個視頻進入一個流行的在線課程。在最近的教程中,講師介紹了范圍 [例如,范圍 (0,10,1)]。在短短幾分鐘內,導師將 range 或 range() 稱為:
- 操作員
- 一個函式
- 關鍵字
- 發電機
事實證明,范圍也在 Sequence 資料型別內,我想它也可以稱為“物件”,對嗎?我知道可以根據背景關系以不同的方式描述相同的“事物”。例如,說我既是加拿大人又是丈夫并不矛盾。問題是在試圖理解 Python 中給定術語的作用或狀態時,將所有這些類別都牢記在腦中。是否有一些標題或圖表或方法或一組定義來理解給定“事物”在 Python 中扮演的所有角色?謝謝你的幫助!
uj5u.com熱心網友回復:
range()下面不只是回答是什么,而是嘗試展示如何調查 Python 中的某些東西是什么或不是什么。我們可以在每一步檢查兩件事,抽象range和分配給變數的初始示例(q 是一個糟糕的變數名,但為了簡潔有用):
q=range(0,10,1)
我們還可以匯入一些幫助檢查型別和關鍵字:
import types
import keyword
現在,讓我們看看您對“它是什么”提出的選項?
操作員
在 python 中,內置運算子“執行物件比較、邏輯運算、數學運算和序列運算”(來自運算子模塊檔案)您可以在提供的鏈接中看到一長串運算子,但range()并不存在。
一個函式(或方法)
這是乍一看更令人困惑的一個,因為谷歌搜索“python range function”給出了數千個非常權威的點擊。此外,范圍甚至列在內置函式的檔案中。也就是說,根據那些相同的檔案,它不是一個函式:“class range(start, stop [,step])”。我們可以如下測驗,使用我們早期的匯入之一和 pythonic 方法來檢查某些東西是否是你認為的那樣,isinstance():
isinstance(range, types.FunctionType)
False
isinstance(q, types.FunctionType)
False
isinstance(range, types.BuiltinFunctionType)
False
isinstance(q, types.BuiltinFunctionType)
False
isinstance(range, types.BuiltinMethodType)
False
isinstance(q, types.BuiltinMethodType)
False
關鍵字
值得慶幸的是,這要簡單得多。
import keyword
keyword.iskeyword(range)
False
您還可以使用print(keyword.kwlist)查看python中所有關鍵字的串列
發電機
正如評論中提到的,雖然range()確實生成了一些東西,但它不是generatorpython 中的型別物件。讓我們仔細檢查一下:
isinstance(range, types.GeneratorType)
False
isinstance(q, types.GeneratorType)
False
現在我們可以看看其他一些選項,從range 的檔案開始以獲得權威的答案:“范圍型別代表一個不可變的數字序列......”
可以理解,這是準確的,但對于第一次學習的人來說很難決議。檢查物件是什么型別的最簡單方法(除了使用types和isinstance)是只檢查type(). 這給出了迷人的同義反復定義,例如:
type(type)
type
So what is range, and what is an instance of a range?
type(range)
type
type(q)
range
And, to finish off the last part of your question, is it an object? Everything in python is an object.
isinstance(q, object)
True
So, from the above, we can deduce that the answer to "what is a range in python?" is: Range is a type, and a defined range is an instance of an object of the range type
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/327767.html
下一篇:函式未創建資料框
