來源自 這裡
Preface
在知道怎麼撰寫、執行第一個 Python 程式之後,接下來就要瞭解一下 Python 這個程式語言,只不過我們只剩五個小時,因而採取的方式是,在這一個小時很快地瀏覽過 Python 語言的重要基本元素,之後四個小時再從更多實際的範例中瞭解 Python 語言。
那麼,哪些東西才是語言中重要而基本的元素呢?Pascal 之父 Niklaus E. Writh 曾說過:
演算法與資料結構就等於程式,而一門語言提供的資料型態(Data type)、運算子(Operator)、程式碼封裝方式等,會影響演算法與資料結構的實作方式,因此這一堂對於 Python 語言講解的重點將選定在:
內建型態
在 Python 中,萬物皆物件!不過,物件導向並非 Python 的主要典範(Paradigm),Python 之父 Guido van Rossum 曾言,自己並非物件導向之信徒,在《Masterminds of Programming》書中,Guido van Rossum 說到:
無論如何,接下來要認識的內建型態都是物件,像是:
數值型態
我們直接進入 Python 互動環境來瞭解這些型態吧!可以使用 type 函式來得知值的型態。首先是數值型態:
上面的範例中使用了 ** 運算子進行次方運算,Python 中當然有加(+)、減(-)、乘(*)等運算子,至於除法則有 / 除法(division)運算子與 // 浮點除法(floor division)兩個,在 Python 2.7 中,整數與整數進行 / 或 // 運算會產生整數;然而整數與浮點數進行 / 會保留小數部份,若進行 // 則會截去小數部份:
在浮點數精確度的表現上,也有必須注意的地方。例如:
多數 CPU 與浮點運算器多採用 IEEE754 浮點數運算(IEEE 754 floating-point arithmetic),某些浮點數本身就有誤差,這是每個程式人都應該知道的事。Python 互動環境在顯示值時,採用制式的(Offical)字串表示,而 print 語句則採用了非正式的(Informal)字串表示;技術上來說,Python 互動環境會利用物件的 __repr__ 方法傳回的字串來顯示,print 語句會利用物件的__str__ 方法傳回的字串來顯示:
雖然你也可以用 (1.0 - 0.8).__repr__()、(1.0 - 0.8).__str__() 來取得字串,不過在 Python 中,底線開頭暗示著你不要直接呼叫或使用,因此上面的示範中,使用 repr 及 str 函式來取得字串。日後你繼續學習 Python 語言的過程中,你會知道,__repr__ 及 __str__ 是可以自行定義的。
簡單來說,用 __repr__ 來傳回沒有岐義的(Unambigous)字串表示,用 __str__ 來傳回具可讀性的(Readable)字串表示。
想要精確地表示浮點數,語言都會提供程式庫,Python 中使用 decimal 模組中的 Decimal 類別 來進行處理。例如:
字串型態
如果要在 Python 中表示字串,可以使用 '' 或 "" 包括文字,兩者在 Python 中具相同作用,都可產生 str 實例,可視情況互換。例如:
可以看到,在某些情況下,你不用特別略過(Escape) \ 字元,然而在底下這種情況下就需要了:
可以在字串前加上 r,表示接下來後面是原始字串(Raw string)表示,這樣 Python 就會忠實表示後續的字串,技術上來說,會自動為你處理需要略過的字元。例如:
Python 中的字串不可變(Immutable),你無法改變已建立的字串內容;想得知字串實際的位元組序列長度(不一定是字元長度),可以使用 len 函式;可以使用 for 來迭代字串;可以使用 in 來測試字串是否包括某子字串;可以使用 + 來串接字串;可以使用 * 來複製字串。例如:
可以使用 [] 指定索引來取得字串中的某個字元,索引從 0 開始,可以是正數或負數,負數表示從尾端開始計數,例如 -1 就是最後一個字元, -2 就是倒數第二個字元,依此類推。例如:
[] 也可以用來切割字串,例如:
[] 還可以指定間距(Gap),例如取索引 0 至 6,每 2 個間距的方式取子字串:
'Python' 的 'P' 至 'y' 算一個間距,'y' 與 't' 之間也是一個間距,依此類推 'Python'[0:6:2] 取得的就是 'Pto',將以上對 [] 的運算方式組合在一起,可以得到一個有趣的反轉字串方式 [::-1]:
如果要進行字串格式化,以下是舊式寫法:
技術上來說,字串物件將 % 定義為格式化操作,可以接受 tuple 與 dict 型態,不過這種寫法可讀性不好,從 Python 2.6 之後,建議使用字串的 format 方法來取代 % 操作:
Supplement:
* Python 2.7.8 - Document - Tutorial
* Python 2.7.8 - Document - Built-in Functions
* Python 2.7.8 - Document - The Python Standard Library
* Python 3.4.1 - Document - Built-in Functions
* [Quick Python] 6. Strings - Part 1
* [Quick Python] 6. Strings - Part 2
This is a blog to track what I had learned and share knowledge with all who can take advantage of them
標籤
- [ 英文學習 ]
- [ 計算機概論 ]
- [ 深入雲計算 ]
- [ 雜七雜八 ]
- [ Algorithm in Java ]
- [ Data Structures with Java ]
- [ IR Class ]
- [ Java 文章收集 ]
- [ Java 代碼範本 ]
- [ Java 套件 ]
- [ JVM 應用 ]
- [ LFD Note ]
- [ MangoDB ]
- [ Math CC ]
- [ MongoDB ]
- [ MySQL 小學堂 ]
- [ Python 考題 ]
- [ Python 常見問題 ]
- [ Python 範例代碼 ]
- [心得扎記]
- [網路教學]
- [C 常見考題]
- [C 範例代碼]
- [C/C++ 範例代碼]
- [Intro Alg]
- [Java 代碼範本]
- [Java 套件]
- [Linux 小技巧]
- [Linux 小學堂]
- [Linux 命令]
- [ML In Action]
- [ML]
- [MLP]
- [Postgres]
- [Python 學習筆記]
- [Quick Python]
- [Software Engineering]
- [The python tutorial]
- 工具收集
- 設計模式
- 資料結構
- ActiveMQ In Action
- AI
- Algorithm
- Android
- Ansible
- AWS
- Big Data 研究
- C/C++
- C++
- CCDH
- CI/CD
- Coursera
- Database
- DB
- Design Pattern
- Device Driver Programming
- Docker
- Docker 工具
- Docker Practice
- Eclipse
- English Writing
- ExtJS 3.x
- FP
- Fraud Prevention
- FreeBSD
- GCC
- Git
- Git Pro
- GNU
- Golang
- Gradle
- Groovy
- Hadoop
- Hadoop. Hadoop Ecosystem
- Java
- Java Framework
- Java UI
- JavaIDE
- JavaScript
- Jenkins
- JFreeChart
- Kaggle
- Kali/Metasploit
- Keras
- KVM
- Learn Spark
- LeetCode
- Linux
- Lucene
- Math
- ML
- ML Udemy
- Mockito
- MPI
- Nachos
- Network
- NLP
- node js
- OO
- OpenCL
- OpenMP
- OSC
- OSGi
- Pandas
- Perl
- PostgreSQL
- Py DS
- Python
- Python 自製工具
- Python Std Library
- Python tools
- QEMU
- R
- Real Python
- RIA
- RTC
- Ruby
- Ruby Packages
- Scala
- ScalaIA
- SQLAlchemy
- TensorFlow
- Tools
- UML
- Unix
- Verilog
- Vmware
- Windows 技巧
- wxPython
訂閱:
張貼留言 (Atom)
[Git 常見問題] error: The following untracked working tree files would be overwritten by merge
Source From Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 # git clean -d -fx 方案2: 今天在服务器上 gi...
-
前言 : 為什麼程序管理這麼重要呢?這是因為: * 首先,本章一開始就談到的,我們在操作系統時的各項工作其實都是經過某個 PID 來達成的 (包括你的 bash 環境), 因此,能不能進行某項工作,就與該程序的權限有關了。 * 再來,如果您的 Linux 系統是個...
-
屬性 : 系統相關 - 檔案與目錄 語法 : du [參數] [檔案] 參數 | 功能 -a | 顯示目錄中個別檔案的大小 -b | 以bytes為單位顯示 -c | 顯示個別檔案大小與總和 -D | 顯示符號鏈結的來源檔大小 -h | Hum...
-
來源自 這裡 說明 : split 是 Perl 中非常有用的函式之一,它可以將一個字串分割並將之置於陣列中。若無特別的指定,該函式亦使用 RE 與 $_ 變數 語法 : * split /PATTERN/,EXPR,LIMIT * split /...
沒有留言:
張貼留言