笨方法學 python

報錯信息

$ python ex/ex1.py
  File "ex/ex1.py", line 3 
    print "I like typing this.     
                             ^ 
SyntaxError: EOL while scanning string literal
  1. 首先在命令行運行 ex1.py 腳本;
  2. Python 告訴 ex1.py 文件的第 3 行有一個錯誤;
  3. 接着這一行的內容被打印了出來;
  4. 而後 Python 打印出了一個 ^ 符號,用來指示出錯的位置;
  5. 最後,打印出一個「語法錯誤」(SyntaxError)告訴用戶是什麼樣的錯誤;
Python標準異常總結

AssertionError 斷言語句(assert)失敗

AttributeError 嘗試訪問未知的對象屬性

EOFError 用戶輸入文件末尾標誌EOF(Ctrl+d)

FloatingPointError 浮點計算錯誤

GeneratorExit generator.close()方法被調用的時候

ImportError 導入模塊失敗的時候

IndexError 索引超出序列的範圍

KeyError 字典中查找一個不存在的關鍵字

KeyboardInterrupt 用戶輸入中斷鍵(Ctrl+c)

MemoryError 內存溢出(可經過刪除對象釋放內存)

NameError 嘗試訪問一個不存在的變量

NotImplementedError 還沒有實現的方法

OSError 操做系統產生的異常(例如打開一個不存在的文件)

OverflowError 數值運算超出最大限制

ReferenceError 弱引用(weak reference)試圖訪問一個已經被垃圾回收機制回收了的對象

RuntimeError 通常的運行時錯誤

StopIteration 迭代器沒有更多的值

SyntaxError Python的語法錯誤

IndentationError 縮進錯誤

TabError Tab和空格混合使用

SystemError Python編譯器系統錯誤

SystemExit Python編譯器進程被關閉

TypeError 不一樣類型間的無效操做

UnboundLocalError 訪問一個未初始化的本地變量(NameError的子類)

UnicodeError Unicode相關的錯誤(ValueError的子類)

UnicodeEncodeError Unicode編碼時的錯誤(UnicodeError的子類)

UnicodeDecodeError Unicode解碼時的錯誤(UnicodeError的子類)

UnicodeTranslateError Unicode轉換時的錯誤(UnicodeError的子類)

ValueError 傳入無效的參數

ZeroDivisionError 除數爲零

 

小技巧

    在 python 腳本最前面加上 「 # -*- coding: utf-8 -*-」,這樣腳本就會使用 unicode UTF-8 編碼;python

    在 Pyhton 中,# 是註釋的意思,那麼 # -*- coding: utf-8 -*- 爲何會被執行?bash

    其實 Python 仍然會忽略這句代碼,可是它卻能夠做爲「黑客」或者解決問題的方法來制定文件的格式,還能夠在編輯器設置中找到其餘相似的註釋;服務器

    在笨方法學 Python 中,推薦從後向前閱讀代碼,這實際上是一種期盼大腦的作法,這樣能讓大腦在沒有附加意義的狀況下理解每一部分代碼,同時能讓你正確的處理每一塊代碼,這是一個方法捕獲錯誤,檢測錯誤的技術;編輯器

 

out_file = open(to_file, 'w')

    爲何這個 w 須要寫在引號裏:函數

    它只是個字符串。網站

格式化字符串

    字符串是程序將信息展現給人的方式,能夠打印它們,能夠將它們寫入文件,還能夠將它們發送給網站服務器,不少事情都是經過字符串交流實現的;this

    程序就是接受用戶的輸入、處理、輸出結果給用戶編碼

%c	轉換成字符(ASCII 碼值,或者長度爲一的字符串)
%r	優先用repr()函數進行字符串轉換(Python2.0新增)
%s	優先用str()函數進行字符串轉換
%d / %i	 轉成有符號十進制數
%u	轉成無符號十進制數
%o	轉成無符號八進制數
%x / %X	(Unsigned)轉成無符號十六進制數(x / X 表明轉換後的十六進制字符的大
小寫)
%e / %E	轉成科學計數法(e / E控制輸出e / E)
%f / %F	轉成浮點數(小數部分天然截斷)
%g / %G	%e和%f / %E和%F 的簡寫
%%	輸出%

 

    可是儘可能在作調試的時候使用 %r,%r 顯示的是變量的「原始」的數據值,%r 在打印的時候可以重現它表明的對象,%r 格式的工做原理:你如何輸入,它就如何打印輸出;spa

 

函數

    函數 Function,過程 Procedure,方法 Method,你能夠簡單把他們當作同一個概念:都是由若干語句組成的一個可執行代碼體。操作系統

    調用函數的一種方式,函數接受命令的方式是使用句點 . (英文稱做 dot 或 period),緊跟着命令,而後是相似 open 和 raw_input 同樣的參數,不一樣點是:當你執行 txt.read 時,你的意思實際上是:「嘿 txt!執行你的 read 命令,無需任何參數!」    

from sys import argv 
from os.path import exists

    之前一直有疑問,既然須要使用這個庫,爲何還要 from A import B,只導入其中一個模塊呢?

    處於代碼的易讀性考慮,列出模塊的名字,更好的幫助閱讀者理解代碼的意義,還有就是處於程序大小方面的考慮。

 

    函數能夠作三樣事情:

        一、它們給代碼片斷命名,就跟「變量」給字符串和數字命名同樣;

        二、它們能夠接受參數,就跟你的腳本接受 argv 同樣;

        三、經過使用 #1 和 #2,它們可讓你建立「微型腳本」或者「小命令」;

相關文章
相關標籤/搜索