Python ABC

Python基礎語法框架筆記

變量

變量聲明定義

Python的變量的聲明和定義很簡單,或者說已經(jīng)淡化了變量聲明和定義的區(qū)別,一條語句:

param = value

我覺得這個是Python簡單易學的一個最基礎體現(xiàn)。區(qū)別于C/C++, golang,他們變量聲明和定義有嚴格的區(qū)分。Python這么做雖然簡單了,但也造成了一定的風險,如果我想要使用之前定義的變量,一不小心手殘輸錯了一個字母,Python語法檢查不會檢查出來,容易造成Bug,且難于調(diào)試發(fā)現(xiàn)。

變量的類型

  • 數(shù)字

    param = 1     # 整數(shù)
    param = -1
    param = 1.1       # 浮點數(shù)
    param = 1e10  # 科學計數(shù)法
    param = 1+2j  # 復數(shù)
    
  • 字符串

    param = "what"
    
  • 布爾

    param = True
    param = False     
    '''
    代表假值:
      1. 常量:None; False
      2. 數(shù)字:0; 0.0; 0j; Decimal(0); Fraction(0, 1)
      3. 空量:""; []; (); {}; set(); range(0)
    '''
    
  • 集合(列表[],元組(),字典{}, set())

    • 注意:
      • 元組元素不可修改
      • set(),字典是無序的
  • 自定義類型:類(class)

類型轉(zhuǎn)換

函數(shù) 描述
int(x [,base]) 將x轉(zhuǎn)換為一個整數(shù)
float(x) 將x轉(zhuǎn)換到一個浮點數(shù)
complex(real [,imag]) 創(chuàng)建一個復數(shù)
str(x) 將對象 x 轉(zhuǎn)換為字符串
repr(x) 將對象 x 轉(zhuǎn)換為表達式字符串
eval(str) 用來計算在字符串中的有效Python表達式,并返回一個對象
tuple(s) 將序列 s 轉(zhuǎn)換為一個元組
list(s) 將序列 s 轉(zhuǎn)換為一個列表
set(s) 轉(zhuǎn)換為可變集合
dict(d) 創(chuàng)建一個字典。d 必須是一個 (key, value)元組序列。
frozenset(s) 轉(zhuǎn)換為不可變集合
chr(x) 將一個整數(shù)轉(zhuǎn)換為一個字符
ord(x) 將一個字符轉(zhuǎn)換為它的整數(shù)值
hex(x) 將一個整數(shù)轉(zhuǎn)換為一個十六進制字符串
oct(x) 將一個整數(shù)轉(zhuǎn)換為一個八進制字符串

運算符

  • 算術(shù)運算符:+ - * / %
  • 位運算符:| & ^
  • 賦值運算符:=[算術(shù)運算符||位運算符]
  • 條件運算符:== ; != ; > ; < ; >= ; <= ;

語句

  • 聲明語句(賦值語句)

  • 運算語句

  • 條件語句

    if expr:
        statements
    elif expr:
        statements
    else:
        statements
    
  • 循環(huán)語句

    '''
    for語句和while語句中的else可又可無,主要是在循環(huán)正常執(zhí)行結(jié)束后會執(zhí)行else中的內(nèi)容
    注意:如果通過break跳出循環(huán),else語句不會執(zhí)行
    '''
    # for語句
    for x in expr:
        statements
    else: 
        statements
        
    # while語句
    while(expr):
        statements
    else:
        satements
    
  • break

  • continue

  • pass :空語句,什么都不執(zhí)行的語句

  • return

函數(shù)

函數(shù)定義(函數(shù)的聲明)

def func_name(param1, param2):
    statement

參數(shù)(輸入)

  • 位置參數(shù)

    def func_name(arg1, arg2):
        statements
    
    '''調(diào)用'''
    func_name("hello", "world")
    
  • 關(guān)鍵字參數(shù)

    def func_name(arg1, arg2):
        statements
    
    '''調(diào)用, 利用關(guān)鍵字參數(shù),就無所謂參數(shù)的位置順序了'''
    func_name(arg1="hello", arg2="world")
    func_name(arg2="world", arg1="hello")
    
  • 參數(shù)默認值

    def func_name(arg1, arg2="world"):
        statements
    
    '''調(diào)用, 此處不傳入第二個參數(shù)的話,arg2就默認是“world”'''
    func_name("hello")
    
  • 不定長參數(shù)

    • 結(jié)合位置實參

      def func_name(arg1, arg2, *args):
          statements
      '''
      此處args是個列表
      '''
      
    • 結(jié)合關(guān)鍵字實參

      def func_name(arg1, arg2, **args):
          statements
      '''
      此處args是個字典
      '''
      

返回值(輸出)

  • 返回簡單類型
  • 返回復雜類型:列表,字典等等

類的定義

class Classname(parent):
    '''構(gòu)造函數(shù)'''
    def __init__(self[, param1, param2]):  # (1)
        self.member1 = value1  # 成員屬性
        self.member2 = value2
        statement
    '''成員函數(shù)'''
    def func_name(self[, param1, param2]): # (2)
        statement

成員屬性

python的程序員屬性都是在構(gòu)造函數(shù)_init_中定義的

成員函數(shù)

python的所有類的成員函數(shù)中都有self關(guān)鍵字,這個關(guān)鍵字表示該類實例化后這個實例化對象本省有點類似C++中的this關(guān)鍵字

異常

異常語句

try:
    statements
except (Exception1[, Exception2[,...ExceptionN]]):
    statements
else:
    statements

異常類型

異常名稱 描述
BaseException 所有異常的基類
SystemExit 解釋器請求退出
KeyboardInterrupt 用戶中斷執(zhí)行(通常是輸入^C)
Exception 常規(guī)錯誤的基類
StopIteration 迭代器沒有更多的值
GeneratorExit 生成器(generator)發(fā)生異常來通知退出
StandardError 所有的內(nèi)建標準異常的基類
ArithmeticError 所有數(shù)值計算錯誤的基類
FloatingPointError 浮點計算錯誤
OverflowError 數(shù)值運算超出最大限制
ZeroDivisionError 除(或取模)零 (所有數(shù)據(jù)類型)
AssertionError 斷言語句失敗
AttributeError 對象沒有這個屬性
EOFError 沒有內(nèi)建輸入,到達EOF 標記
EnvironmentError 操作系統(tǒng)錯誤的基類
IOError 輸入/輸出操作失敗
OSError 操作系統(tǒng)錯誤
WindowsError 系統(tǒng)調(diào)用失敗
ImportError 導入模塊/對象失敗
LookupError 無效數(shù)據(jù)查詢的基類
IndexError 序列中沒有此索引(index)
KeyError 映射中沒有這個鍵
MemoryError 內(nèi)存溢出錯誤(對于Python 解釋器不是致命的)
NameError 未聲明/初始化對象 (沒有屬性)
UnboundLocalError 訪問未初始化的本地變量
ReferenceError 弱引用(Weak reference)試圖訪問已經(jīng)垃圾回收了的對象
RuntimeError 一般的運行時錯誤
NotImplementedError 尚未實現(xiàn)的方法
SyntaxError Python 語法錯誤
IndentationError 縮進錯誤
TabError Tab 和空格混用
SystemError 一般的解釋器系統(tǒng)錯誤
TypeError 對類型無效的操作
ValueError 傳入無效的參數(shù)
UnicodeError Unicode 相關(guān)的錯誤
UnicodeDecodeError Unicode 解碼時的錯誤
UnicodeEncodeError Unicode 編碼時錯誤
UnicodeTranslateError Unicode 轉(zhuǎn)換時錯誤
Warning 警告的基類
DeprecationWarning 關(guān)于被棄用的特征的警告
FutureWarning 關(guān)于構(gòu)造將來語義會有改變的警告
OverflowWarning 舊的關(guān)于自動提升為長整型(long)的警告
PendingDeprecationWarning 關(guān)于特性將會被廢棄的警告
RuntimeWarning 可疑的運行時行為(runtime behavior)的警告
SyntaxWarning 可疑的語法的警告
UserWarning 用戶代碼生成的警告

觸發(fā)異常

if expr :
   raise Exception(arg1 [, arg2])
# Exception:    是個所有異常的基類
# arg1,arg2:    是自已提供的異常參數(shù)

'''實例'''
def test_exception(arg):
    if arg<1:
        raise Exception("Invalid arg")
        
try:
    test_exception(0)
except Exception as err:
    print 1, err
else:
    print 2

自定義異常

'''定義'''
class Networkerror(RuntimeError):
    def __init__(self, arg):
        self.args = arg
        
'''使用'''
try:
    raise Networkerror("Bad hostname")
except Networkerror,e:
    print e.args
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容