Python學習(一):python3基礎

主要參考廖雪峯的python教程

不斷的學習才能不斷髮現好東西!
富而不驕易,窮而不怨難

數據類型 (一切均爲對象)

整數(int)、浮點數(float)、字符串(str)、布爾值(bool)、空值(NoneType)、變量、常量

常用數據結構 (collections)

  1. list:是一種有序的集合,可以隨時添加和刪除其中的元素;用索引來訪問list中每一個位置的元素,記得索引是從0開始的;如果要取最後一個元素,除了計算索引位置外,還可以用-1做索引,直接獲取最後一個元素;當索引超出了範圍時,Python會報一個IndexError錯誤;用len()函數可以獲得list元素的個數;如果一個list中一個元素也沒有,就是一個空的list,它的長度爲0,如[]。unhashable type: ‘list’,故不可以放入set和dict中。

  2. tuple:tuple和list非常類似,也爲有序集合,但是tuple一旦初始化就不能修改;因爲tuple不可變,所以代碼更安全。如果可能,能用tuple代替list就儘量用tuple;tuple的陷阱:當你定義一個tuple時,在定義的時候,tuple的元素就必須被確定下來;如果要定義一個空的tuple,可以寫成();只有1個元素的tuple定義時必須加一個逗號,來消除歧義,如(1,),這是因爲括號()既可以表示tuple,又可以表示數學公式中的小括號,這就產生了歧義。

  3. dict:全稱dictionary,在其他語言中也稱爲map,使用鍵-值(key-value)存儲,具有極快的查找速度;dict內部存放的順序和key放入的順序是沒有關係的。
    和list比較,dict有以下幾個特點:
    查找和插入的速度極快,不會隨着key的增加而變慢;
    需要佔用大量的內存,內存浪費多。
    而list相反:
    查找和插入的時間隨着元素的增加而增加;
    佔用空間小,浪費內存很少。
    所以,dict是用空間來換取時間的一種方法。
    正確使用dict非常重要,需要牢記的第一條就是dict的key必須是不可變對象。在Python中,字符串、整數等都是不可變的,因此,可以放心地作爲key。而list是可變的,就不能作爲key。由於一個key只能對應一個value,所以,多次對一個key放入value,後面的值會把前面的值沖掉,也就是說
    key不重複。

  4. set:和dict類似,也是一組key的集合,但不存儲value。由於key不能重複,所以,在set中,沒有重複的key,重複元素在set中自動被過濾。要創建一個set,需要提供一個list作爲輸入集合。set可以看成數學意義上的無序和無重複元素的集合,因此,兩個set可以做數學意義上的交集&、並集』等操作。set的原理和dict一樣,所以,同樣不可以放入可變對象,因爲無法判斷兩個可變對象是否相等,也就無法保證set內部“不會有重複元素”,因此,不能把list放入set中,可以把tuple放入set中,但是tuple中若是含有list元素,則不能放入set中。
  5. range:不可變數字序列類型;str,不可變的字符串對象,即不可變的文本序列
  6. frozenset:是凍結的集合,它是不可變的,存在哈希值,好處是它可以作爲字典的key,也可以作爲其它集合的元素。缺點是一旦創建便不能更改,沒有add,remove方法。set是可變的,有add(),remove()等方法。既然是可變的,所以它不存在哈希值。

備註:

  • 對於不變對象來說,調用對象自身的任意方法,也不會改變該對象自身的內容。相反,這些方法會創建新的對象並返回,這樣,就保證了不可變對象本身永遠是不可變的。
  • 使用key-value存儲結構的dict在Python中非常有用,選擇不可變對象作爲key很重要,最常用的key是字符串。
  • 常用內建常量:True,False,None
  • 常用內建函數:
    abs(x):返回一個數的絕對值。參數可以是整數或浮點數,如果參數是一個複數,將會返回它的模;
    all(iterable):如果 iterable(迭代器) 中所有元素都爲 true (或者iterable 爲空)則返回 True;
    any(iterable):假如iterable 裏任意一個元素是True,則返回True。假如iterable是空, 返回 False;
    bin(x):將一個整數轉換成一個二進制字符串;
    class bool([x]):返回一個布爾值, True 或者False之一. x 是使用標準轉換的真值測試器. 如果x 的值爲假或者省略, 將返回 False; 其它的輸入則返回 True. bool 類是 int類的一個子類 ;他不能產生子類. 只能實例化爲布爾值 False 或者 True;(bool(None)返回False);
    chr(i):返回一個Unicode編碼是整數i的字符串,例如, chr(97)返回字符串 ‘a’;
    ord(c):Given a string representing one Unicode character, return an integer representing the Unicode code point of that character. For example, ord(‘a’) returns the integer 97;
    pow(x, y[, z]):返回x 的 y次方; 如果 z 提供的時候,返回 x 的 y 次方,然後對 z取模。(這樣比 pow(x, y) % z) 更高效;
    print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
    打印 objects 到文本流對象 file,以 sep 爲分隔符,以 end 爲結尾符。如果要提供 sep, end 和 file 這三個參數的話,必須使用鍵值對的形式;
    range(start, end, step):參數含義:start:計數從start開始。默認是從0開始。例如range(5)等價於range(0, 5); end:技術到end結束,但不包括end.例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5,step:每次跳躍的間距,默認爲1。例如:range(0, 5) 等價於 range(0, 5, 1);
    round(number[, ndigits]):返回浮點數 number 四捨五入到小數點之後 ndigits 位的結果。如果省略ndigits,該參數默認爲零;
    class set([iterable]):返回一個新的set 對象,其元素可以從可選的iterable獲得,set是一個內建的類;
    setattr(object, name, value):getattr()的相反操作。參數是一個對象、一個字符串和任何一個值。字符串可以是一個已存在屬性的名字也可以是一個新屬性的名字。該函數將值賦值給屬性,只要對象允許。例如,setattr(x, ‘foobar’, 123)等同於x.foobar = 123;
    hasattr(object, name):參數是一個對象和一個字符串,返回一個bool值;
    sorted(iterable[, key][, reverse]):依據iterable中的元素返回一個新的列表;
    class str(object=b”, encoding=’utf-8’, errors=’strict’):返回 object 的 字符串 版本;
    sum(iterable[, start]):將start以及iterable的元素從左向右相加並返回總和。start默認爲0。iterable的元素通常是數字,start值不允許是一個字符串;
    class tuple([iterable]):構建一個元組;
    class type(object):返回object的類型;
    zip(iterables):利用每個可迭代元素,製作一個迭代器來聚合元素,返回一個zip對象,zip() 與 操作符一起可以用來 unzip 一個列表;
    dir([object])參數缺省情況下,返回當前域中所有的變量名和方法名,已經引入的模塊名。有一個參數的話,嘗試返回由該參數對象的有效屬性組成的列表;
    divmod(a, b):參數爲兩個數值(非複數),返回它們相除後的的商和餘數;
    numerate(iterable, start=0):返回一個枚舉對象,enumerate類型。iterable 必須是序列、迭代器,或者其他支持迭代的對象。由 enumerate() 返回的迭代器的 next() 方法返回一個元組,該元組包括一個計數器 (從 start 開始,start 默認值爲0) 和對 iterable 的迭代中取得的值;
    eval(expression, globals=None, locals=None):參數是一個字符串參數和可選的 globals 和 locals 兩個參數。如果提供 globals 參數,則該參數必須是一個字典。如果提供 locals參數,則該參數可以是任何映射類型的對象,如:
    print(eval(‘x+5’)),輸出6;
    exec(object[, globals[, locals]]):exec語句用來執行儲存在字符串或文件中的Python語句,如:exec(‘print(“Hello World”)’),輸出:Hello World;
    filter(function, iterable):本函數用來從一個迭代對象iterable遍歷所有元素,當每個元素作爲參數給函數function對象運行之後,判斷爲True的元素保留下來,而爲False的元素則跳過,即是達到過濾不需要元素的目標。參數iterable是可迭代的對象,比如列表、字典、字符串,或者帶迭代器的函數對象。參數function是一個能輸入元素進判斷並返回值的函數,如果這個參數爲空,默認使用標識函數identity爲缺省函數;
    class float([x]):返回一個由數值或字符串 x 轉換而成的浮點數;
    format(value[, format_spec]):將value轉化成“格式化”的表現形式,格式由format_spec控制。對format_spec的解釋依賴於value參數的類型,大多數內置類型有標準的格式化語法:格式化規範迷你語言。format_spec 的默認值爲空字符串,返回的結果通常與 str(value) 相同。
    class frozenset([iterable]):返回一個新的frozenset對象,如果可選參數iterable存在,frozenset的元素來自於iterable;
    hash(object):返回對象的哈希值. hash值是整數。它被用於在字典查找時快速比較字典的鍵。相同的數值有相同的hash,只有不可變的對象才能被hash,如數字、字符串、frozenset等,而list、set等不能被hash;
    help([object]):調用內置的幫助系統。(這個函數主要用於交互式使用。)如果沒有參數,在解釋器的控制檯啓動交互式幫助系統。如果參數是個字符串,該字符串被當作模塊名,函數名,類名,方法名,關鍵字或者文檔主題而被查詢,在控制檯上打印幫助頁面。如果參數是其它某種對象,生成關於對象的幫助頁面。
    hex(x):將一個整數轉換成一個小寫的十六進制字符串。結果以“0x”爲前綴;
    id(object):返回對象的“標識”。This is an integer which is guaranteed to be unique and constant for this object during its lifetime. 生命期不重疊的兩個對象可以有相同的id()值。CPython實現細節: 這是對象的內存地址;
    input([prompt]):如果有prompt參數,則將它輸出到標準輸出且不帶換行;
    class int(x, base=10):返回一個由數值或字符串 x 轉換而成的整數,如果省略參數,則返回 0;
    isinstance(object, classinfo):如果參數object 是參數classinfo 的一個實例;或者是其一個(直接的、間接的或者virtual)子類的實例,返回真;
    issubclass(class, classinfo):如果class是classinfo的子類(直接的,間接的,或者virtual) ,返回真;
    iter(object[, sentinel]):返回一個iterator對象。根據有無第二個參數,對第一個參數的解釋相差很大;
    len(s):返回一個對象的長度 (元素的個數) . 參數可以是序列(如字符串,字節,元組,列表或者範圍)或者集合(如字典,集合或者固定集合);
    map(function, iterable, …):通過定義可以看到,這個函數的第一個參數是一個函數,剩下的參數是一個或多個序列,返回值是一個集合。function可以理解爲是一個一對一或多對一函數,map的作用是以參數序列中的每一個元素調用function函數,返回包含每次function函數返回值的list;
    max(iterable, *[, key, default])\max(arg1, arg2, *args[, key]):返回可迭代的對象中的最大的元素,或者返回2個或多個參數中的最大的參數;
    min(iterable, *[, key, default])\min(arg1, arg2, *args[, key]):返回可迭代的對象中的最小的元素,或者返回2個或多個參數中的最小的參數;
    next(iterator[, default]):Retrieve the next item from the iterator by calling its next() method;
    oct(x):將一個整數轉換成一個八進制字符串;
    open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None):Open file and return a corresponding file object. If the file cannot be opened, an OSError is raised.
    reversed(seq):返回一個反向迭代器;
    class slice(stop)、class slice(start, stop[, step]):返回一個slice對象,表示由索引range(start, stop, step)指出的集合,切片對象具有隻讀屬性start、stop和step,它們僅僅返回參數的值;

Exception hierarchy

BaseException
+– SystemExit
+– KeyboardInterrupt
+– GeneratorExit
+– Exception
+– StopIteration
+– ArithmeticError
| +– FloatingPointError
| +– OverflowError
| +– ZeroDivisionError
+– AssertionError
+– AttributeError
+– BufferError
+– EOFError
+– ImportError
+– LookupError
| +– IndexError
| +– KeyError
+– MemoryError
+– NameError
| +– UnboundLocalError
+– OSError
| +– BlockingIOError
| +– ChildProcessError
| +– ConnectionError
| | +– BrokenPipeError
| | +– ConnectionAbortedError
| | +– ConnectionRefusedError
| | +– ConnectionResetError
| +– FileExistsError
| +– FileNotFoundError
| +– InterruptedError
| +– IsADirectoryError
| +– NotADirectoryError
| +– PermissionError
| +– ProcessLookupError
| +– TimeoutError
+– ReferenceError
+– RuntimeError
| +– NotImplementedError
+– SyntaxError
| +– IndentationError
| +– TabError
+– SystemError
+– TypeError
+– ValueError
| +– UnicodeError
| +– UnicodeDecodeError
| +– UnicodeEncodeError
| +– UnicodeTranslateError
+– Warning
+– DeprecationWarning
+– PendingDeprecationWarning
+– RuntimeWarning
+– SyntaxWarning
+– UserWarning
+– FutureWarning
+– ImportWarning
+– UnicodeWarning
+– BytesWarning
+– ResourceWarning

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章