中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于python基礎知識的整理

發布時間:2020-07-10 14:12:18 來源:億速云 閱讀:146 作者:清晨 欄目:編程語言

這篇文章主要介紹關于python基礎知識的整理,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

近些年python語言非常流行,許多開發者都會學習一些python相關知識,為大家整理了python的一些基礎知識,希望對大家有一定的幫助。

關于python基礎知識的整理

注:下文Python代指Python3。

基本信息

  • 和Javascript一樣,面向對象、解釋型、動態數據類型

  • 一切皆為對象(Object),包含原始數據類型也由內置構造函數創建,高階對象為Object

  • 單行注釋使用#標識,多行注釋同多行字符串

  • 靠縮進約束邏輯分支,無大括號等多余運算符

  • 支持多行單語句、單行多語句

  • 變量無需聲明,必須賦值才會正式聲明

  • 有自己的模塊系統

  • 文件以.py結尾。

基本構成

Python中一切皆對象,數字、字符串、元組、列表、字典、函數、方法、類、模塊等等都是對象。

不同的編程語言以不同的方式定義“對象”。 某些語言中,它意味著所有對象必須有屬性和方法;另一些語言中,它意味著所有的對象都可以子類化。

在Python中,定義是松散的,某些對象既沒有屬性也沒有方法,而且不是所有的對象都可以子類化。 簡單可以解釋為:Python 中的一切都可以賦值給變量或者作為參數傳遞給函數。

所有對象都有三個共同特征: 

  • 身份:即對象數據(非變量)在內存中的唯一id,可以通過函數id(obj)得到

  • 類型:對象的類型決定了對象可以保存什么類型的值,有哪些屬性和方法,可以進行哪些操作,遵循怎樣的規則。可以使用內建函數type()來查看對象的類型

  • :對象所表示的數據

大部分 Python 對象有屬性、值或方法,使用句點.標記法來訪問屬性。 最常見的屬性是函數和方法,一些 Python 對象也有數據屬性,如:類、模塊、文件等。

數據存儲 

字符串、數字數據在內存中均為引用類型,即棧內存保存數據本身,堆內存維護一個變量池,如下實例: 

# 開辟內存存儲數據'hello',并創建變量a,并將a的指針指向此數據
a = 'hello'
# 開辟內存存儲數據'world',并更改變量a的指針,銷毀數據'hello'
a = 'world'
# 開辟內存存儲數據"hello world!",并同時創建三個變量,將三個變量的指針同時指向此數據
b = c = d = "hello world!"
# 多個變量賦值,同上,分別先后對應
e, f, g = 1, 2, 'python'

實際上變量a在首次聲明并賦值時,棧區開辟內存存儲'hello'字符串, a再次賦值時,棧區重新開辟內存存儲數據'world'字符串,同時將變量a的指針指向數據'world',銷毀數據'hello'

其他數據類型,類似;如列表、字典:

a = [1,2,3,4]
# 變量a的指針不改變
a[0] = 5
# 變量a的指針改變
a = [2,3,4,5]

變量a更改列表子數據時,列表本身的指針和位置不會改變,但將a本身重新賦值時,則同上:原列表數據銷毀、指針指向新列表數據。

Python中支持刪除變量對對象的引用,使用del語句,如下:

a = 10
b = 20
c = 30
d = [1,2,3,4]
del a
del b, c
del d[0]

對象比較

  • == 操作符用于測試兩個被引用的對象的值是否相等

  • is 用于比較兩個被引用的對象是否是同一個對象

類型比較

  • type(obj)判斷數據類型

  • isinstance(object, classinfo)判斷實例是否屬于某類

緩存和內存回收機制

緩存機制

Python 緩存了某些不變的對象對其進行復用,而不是每次創建新的對象。 在 Python 中變量都是指向某一對象的引用,當多個變量都引用了相同的對象,稱為共享引用。

如下代碼:

# 由于變量僅是對對象數據的一個引用,因此改變 a 并不會導致 b 的變化
a = 1
b = a
a = 0
print(a) # 0
print(b) # 1

# 對
a = [1, 2, 3]
b = a
a[0] = 0
print(a) # [0, 2, 3]
print(b) # [0, 2, 3]

內存回收機制

每一個對象有兩個標準的頭部信息:

  • 類型標識符:標識對象數據類型

  • 引用的計數器:用于決定是否需要對對象進行回收

計數器記錄了當前指向該對象引用的數目,一旦對象的計數器為 0 ,即不存在對該對象的引用,則這個對象的內存空間會被回收,和Javascript中基本一致, 可以通過sys模塊中的getrefcount()函數查詢一個對象計數器的值。

import sys
sys.getrefcount(1)
# 實測python的編譯過程和打印乃至getrefcount這個函數本身都會對目標對象造成多余的引用計數

數據類型

數字 Numbers

三種類型:

  • int:整型 int(num)

  • float:浮點型 float(num)

  • complex:復數型 complex(a, b)

運算相關:

  • 數學常量...

  • 數學函數...

  • 隨機數函數...

  • 三角函數...

字符串 String

方法:str()包含一堆內建函數

三種符號表示方式(三引號保持原有格式):

  • 'str'

  • "str"

  • '''str'''

  • """str"""

兩種操作/讀取方式:

  • 下標:str[0]

  • 中括號:str[:]

示例:

var1 = 'Hello World!'
print ("已更新字符串 : ", var1[:6] + 'Surmon!')
# 已更新字符串 :  Hello Surmon!

列表 List

簡單說:類似數組,可嵌套,可作為堆棧使用

基本格式:['str', 1, ['hello']],擁有各種類似數組操作的方法,訪問方式可使用下標、中括號[index:index]

元組 Tuple

簡單說:類似列表,但只讀。

基本格式:('', ''),和列表類似,擁有只讀特性,可拼接,擁有基本操作方法。

集合 Sets

簡單說:是一個無序不重復元素的序列

基本格式:{ }字面量 或 set()方法,創建一個空集合必須用set()而不是{ }字面量,因為{ }字面量是用來創建一個空字典。

復雜說:類似于數學中的集合,可以進行成員關系測試(交、差、并、補集),還可以用來去重。

BTW:類似于Jvascript中的Set數據結構。

字典 Dictionary

簡單說:就是對象

與Javascript并無太大異樣,多了一些方法,和一些方法名稱的不同,僅可通過obj[key]訪問成員。

迭代器和生成器

就是Javascript中的Generator和yield,一句話的話就是:交出函數(運算)的執行權,即暫停執行。

兩個參考鏈接:

# 阮一峰 - Javascript 中的 Generator

# Python3 中的迭代器和生成器

函數

普通函數基本沒區別,區別的地方: 函數形參可以加一個*將函數所有不固定參數合并在一個元組,若參數為空,則返回一個空元組。

和Jvascript比的話,就是ES5中的構造函數,ES6中的class。

它用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。

對象是類的實例。就是面向對象啦,上下文不再是this,而是類函數中的首參(一般定義為self)。

類的專有方法:

  • __init__ : 構造函數,在生成對象時調用(對應ES6中的constructor)

  • __del__ : 析構函數,釋放對象時使用

  • __repr__ : 打印,轉換

  • __setitem__ : 按照索引賦值

  • __getitem__: 按照索引獲取值

  • __len__: 獲得長度

  • __cmp__: 比較運算

  • __call__: 函數調用

  • __add__: 加運算

  • __sub__: 減運算

  • __mul__: 乘運算

  • __div__: 除運算

  • __mod__: 求余運算

  • __pow__: 稱方

包和模塊

Python中,包為最大內聚單位,當然它只是抽象的,它可能是個文件夾或是其他whatever,他的意義就是更好地管理模塊的命名空間。

假設現在有個模塊的名稱是A.B, 那么他表示一個包A中的子模塊B。 就好像使用模塊的時候,你不用擔心不同模塊之間的全局變量相互影響一樣,采用package.moduleName這種形式也不用擔心不同庫之間的模塊重名的情況。

Python中以文件為模塊單位,模塊中又可以區分不同的類、方法、對象或任何其他數據,和Node.js中的模塊大同小異。

核心語句:

  • import ...

  • from ... import ...

核心對象和模塊

  • File:對文件的操作

  • OS:處理文件和目錄

  • json:對json數據的處理

  • 時間:timecalendar

多線程

多線程類似于同時執行多個不同程序,多線程運行有很多優點。

線程分為:

  • 內核線程:由操作系統內核創建和撤銷

  • 用戶線程:不需要內核支持而在用戶程序中實現的線程

Python3中線程相關的兩個模塊:

  • _thread(原thread,已廢棄)

  • threading

一般可以使用函數或者用類來包裝線程對象。

以上是關于python基礎知識的整理的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泰安市| 汉川市| 冀州市| 壶关县| 孝昌县| 白山市| 灵宝市| 北安市| 木兰县| 札达县| 黄冈市| 肃北| 张家口市| 富裕县| 黄梅县| 静宁县| 济阳县| 汉源县| 手游| 文成县| 临桂县| 内丘县| 徐闻县| 甘洛县| 松潘县| 电白县| 平乡县| 吴旗县| 遵义市| 冷水江市| 仲巴县| 四子王旗| 琼海市| 平远县| 宜春市| 广德县| 喀喇沁旗| 哈巴河县| 通州区| 海南省| 库尔勒市|