python初體驗(1) 基礎篇

2022-04-03 06:47:22 字數 2365 閱讀 1186

我為什麼學習python

首先我的工作第一語言是c/c++(物件導向子集)。選擇學習python一方面是因為看很多人都說python開發效率高,所以想驗證一下;另一方面,eric s. raymond在文章:如何成為一名黑客 中對python的推薦。還有一方面,python的設計哲學:用一種方法,最好是只有一種方法來做一件事,這一點我比較認同。

好了,我選擇的入門資料是python簡明教程。下面是我學習時的一些筆記和思考,上面有很明顯的c和c++的痕跡。

控制結構:

有c沒有的自然字串的概念。

不支援i++。我對此表示歡迎。++會誘導程式設計師新手犯錯誤。我在c中基本上拋棄了++。

python沒有switch,可以使用if elif else來實現同樣的功能。

while後可以跟乙個else從句。

for i in range(1,5):,從1迴圈到5,但是不包括5。

break語句仍然可以停止迴圈,但是,停止後,不會執行else塊。

continue和之前相同。

函式入參沒有型別,如果實參和形參不符合會有什麼後果,如何避免。如果型別不符合,會直接執行失敗。

通過global可以告訴函式,變數屬於函式之外。但是,不鼓勵使用全域性變數。它可以同時宣告多個。

預設引數:和c++一樣,用」= value」來表示。統一,它只可以為最後乙個引數設定預設引數。

資料結構:

字典:

字典類似於二叉樹,但是不知道字典內部使用的是什麼演算法。

鍵值必須唯一,如果不唯一,新增的時候會發生什麼?linux 二叉樹是覆蓋的。

答案:如果字典中已經有了乙個key,這個時候再新增,它會覆蓋掉原先的value。對它來說是設定。這個和linux 二叉樹倒是一致。

和二叉樹類似,鍵是不允許改變的。如果改變會發生什麼後果。至少二叉樹改變後,這個數的結構會敗壞。而且,編譯器是無法檢測的。python是否會檢查?

答案:是的,它在執行的時候會提示錯誤。因為他沒有編譯的概念。所以。。。

是否可以弄乙個變數作為關鍵字?

答案:這樣是可以的,執行也是沒有問題的。但是如果更改這個關鍵字那?

但是如果更改這個關鍵字那?

答案:更改後發現字典並沒有隨著改變,說明他只是使用了這個變數的值,取他的值做常量,作為關鍵字,而不是使用變數作為關鍵字。

字典的效率好不好,他的內部使用的是什麼演算法?二叉樹,hash,還是其他?

答案:雜湊表。

字典的健是否可以型別不同?

答案:是可以的。

字典是dict的物件,元組是tuple的物件,列表時list的物件。

序列:

序列的兩個特點是索引操作符和切片操作符。乙個是獲取乙個專案,乙個是獲取子串行。

列表和元組都是序列。

序列是從零開始的,這是陣列一樣。不過他居然可以是負數!?

答案:負數的時候表示去最後的元素,-1表示最後乙個。

什麼是切片?

答案:就是在乙個序列中獲取乙個子串行。對於切片,冒號是必須的,而數字不是必須的,如果沒有數字,這表示從頭開始或到結尾。全部沒有數字表示整個序列。

是否通過切片來為乙個新的序列賦值?

答案:可以的。

如果獲取元素超出範圍會怎樣?

答案:執行出錯。

如果切片時超出範圍會怎樣?

答案:本來以為會出錯,居然沒有,而只是顯示為空。

列表,元組,字串都是序列,都可以用序列的方法來操作。

元組

和list唯一不同的是,他不可以改變。

和c++不一樣,元組和list裡面可以存放不同型別的值。

myempty = ()表示空的元組;

myempty = (2,)必須加『,』才可以表示只有乙個元組;否則是物件。

物件與引用

當你建立乙個物件並給它賦乙個變數的時候,這個變數僅僅 引用 那個物件,而不是表示這個物件本身!也就是說,變數名指向你計算機中儲存那個物件的記憶體。這被稱作名稱到物件的繫結。

c中的指標我比較熟悉,他應該相當於指標,但是,從外觀開不出什麼。我感覺這個特性和語言的初衷有些偏差:可能會導致程式設計師出錯。

總的感覺:語法確實比較簡單,比較容易入手。

python初體驗(2) 物件導向篇

在學習python的物件導向時,我始終參照的是c 的物件導向機制。相對而言,python的物件導向確實更簡單一些。基礎 整數也被作為物件。前面就看到過,說所有的東西都是物件,包括函式。屬於乙個物件或類的變數被稱為域 這個名稱有點奇怪,c 叫成員。域分為兩種,分別屬於物件和屬於類 其實就是成員和靜態成...

Go初體驗 基礎

go的字串有點不一樣。它是utf8字元的乙個序列 當字元為乙個ascii碼時為乙個位元組,其他字元則根據需要占用2 4個位元組。該做法的好處是 節省了記憶體和硬碟的儲存空間,同時,不需要像其它語言一樣對utf8字符集的文字進行編碼和解碼。go通過雙引號 和反引號 來構建字串。雙引號則會對文字進行解析...

python 執行緒初體驗

import threading import time class mythread threading.thread def init self,threadid,name,counter threading.thread.init self self.threadid threadid sel...