阿龙的学习笔记---python相关杂七杂八的记录
生活随笔
收集整理的這篇文章主要介紹了
阿龙的学习笔记---python相关杂七杂八的记录
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
- _:臨時(shí)變量,_ 代表臨時(shí)變量比如for _ in range(10): _ 代表臨時(shí)變量,用來循環(huán)10次。或者接收不需要的函數(shù)返回值。
- 聲明編碼方式:
- python在文件頭聲明編碼方式:具體格式參考官方文檔:https://www.python.org/dev/peps/pep-0263/
- # -*- coding: utf-8 -*-
- # coding=utf-8
- python在文件頭聲明編碼方式:具體格式參考官方文檔:https://www.python.org/dev/peps/pep-0263/
- 字典取值:
- 最簡單的是方括號(hào),dict[‘key’],但是如果沒有這個(gè)key,會(huì)拋出異常。
- 字典的成員函數(shù)dict.get(key, default):使用get()可以預(yù)防ValueError,可以設(shè)置默認(rèn)值,在沒有取到的時(shí)候則返回默認(rèn)值。
- 字符串格式控制:
- u"“以 Unicode 格式進(jìn)行編碼; r”“去掉反斜杠的轉(zhuǎn)移機(jī)制; b”“表示bytes類型數(shù)據(jù); f”"支持大括號(hào)內(nèi)的python表達(dá)式。
- 控制輸出浮點(diǎn)數(shù)的位數(shù):
- print(format(1.23456, ‘.2f’)) 或 print(’%.2f’ % f)
- 文件IO:
- open(filename, mode)
- mode: r讀,w寫,a追加;后面:’+'讀寫, 'b’二進(jìn)制
- 使用open之后一定要執(zhí)行close,為了避免忘記,可以使用:with open(‘in.dat’, ‘r’) as f,會(huì)自動(dòng)調(diào)用close()
- with xxx as y:
- 有些對(duì)象可能事先需要設(shè)置,事后做清理工作。對(duì)于這種場(chǎng)景,Python的with語句提供了一種非常方便的處理方式。
- 比如打開文件,會(huì)自動(dòng)調(diào)用y.close()。
- 如果是自定義的對(duì)象,你可以初始化類中的__enter__() 和 __exit__()函數(shù),這樣會(huì)在with進(jìn)入和退出時(shí)自動(dòng)調(diào)用。
- 重點(diǎn)在于如果在with內(nèi)部的語句拋出了異常,exit()函數(shù)依然能夠在拋出之前順利執(zhí)行。并且可以讓exit函數(shù)接收錯(cuò)誤的信息比如錯(cuò)誤類型、錯(cuò)誤內(nèi)容,并做相應(yīng)的處理。
- 修飾器@staticmethod:
- @staticmethod修飾的函數(shù)為靜態(tài)方法,只是名義上歸屬類管理,但是不能使用類變量和實(shí)例變量,是類的工具包,類似C++的static成員函數(shù)。
- 靜態(tài)方法函數(shù)里不傳入self 或 cls,可以傳入自定義參數(shù)。
- 靜態(tài)方法調(diào)用時(shí)可以使用實(shí)例對(duì)象調(diào)用,也可以直接靜態(tài)調(diào)用。myClass.method(),或者myClass().method()都可以。
- 修飾器@classmethod :
- @classmethod修飾符修飾的函數(shù)不需要實(shí)例化,不需要 self 參數(shù),但第一個(gè)參數(shù)需要是表示自身類的 cls 參數(shù),可以來調(diào)用自身類的屬性、方法等。
- 比如項(xiàng)目中會(huì)定義一個(gè)Tool類,Tool類中定義一些功能的tool函數(shù),調(diào)用時(shí)直接Tool.getServerInfo()則可以直接調(diào)用。
-
異常處理try…except…else…finally:
try:Nomal execution block except A:Exception A handle except B:Exception B handle except:Other Exception handle else:if no exception, get here finally: print('finally')- 完整的如上,try中的代碼塊拋出異常,被except語句捕獲。
- 可以指定特定的Error類型,如果這一層沒有捕捉到,會(huì)傳到下一層except,如果except不帶特定類型,那么則會(huì)捕捉所有的異常。
- 一般捕捉except Exception as e: ,Exception 是常見錯(cuò)誤的基類。
- else會(huì)在沒有異常拋出時(shí)進(jìn)入這個(gè)代碼區(qū)域,else必須在有except語句后出現(xiàn)。
- finally中的代碼,無論是否有錯(cuò)誤,都會(huì)運(yùn)行。并且**前面如果調(diào)用了return,finally中的代碼仍然會(huì)執(zhí)行。**這個(gè)比較玄學(xué),下面的例子測(cè)試:
- def exceptTest():try:may_throw_excptioin()return 0except:return 1else:print 'no exception'return 2finally:print 'in finally'# return 3
- 如果沒有拋出異常,try會(huì)執(zhí)行,else緊接著try后執(zhí)行,但是由于try中以及return了,所以不會(huì)進(jìn)else。return 0之前會(huì)執(zhí)行finally中的語句,如果有return 3,則會(huì)覆蓋返回值, 最終會(huì)執(zhí)行return 3,;如果沒有return 3,則return 0。
- 如果拋出了異常,except會(huì)執(zhí)行,但是return 1之前會(huì)調(diào)用finally中的語句,如果finally中執(zhí)行了return 3,則會(huì)覆蓋返回值,則最終會(huì)返回3。如果沒有return 3,則會(huì)return 1。
- 可迭代對(duì)象:
- 迭代器是可迭代的對(duì)象,這意味著可以使用for遍歷所有值。for 循環(huán)遍歷的原理就是靠這個(gè)迭代器。
- 原理:
- 列表、元組、字典、集合以及字符串都是可迭代的對(duì)象。它們是可迭代的容器,可以從中獲取迭代器(Iterator)。比如:mytuple = ("apple", "banana", "cherry") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))
- for循環(huán)其實(shí)就是取了對(duì)象的迭代器,然后每次對(duì)迭代器調(diào)用next()。迭代完最后一個(gè)數(shù)據(jù)之后,再次調(diào)用next()函數(shù)會(huì)拋出StopIteration的異常,來告訴我們所有數(shù)據(jù)都已迭代完成,不用再執(zhí)行next()函數(shù)了。
- 自定義迭代器
- 在使用next()函數(shù)的時(shí)候,調(diào)用的是迭代器對(duì)象的__next__方法。所以,我們要想構(gòu)造一個(gè)迭代器,就要實(shí)現(xiàn)它的__next__方法。
- 同時(shí),python要求迭代器本身也是可迭代的,所以我們還要為迭代器實(shí)現(xiàn)__iter__方法,而__iter__方法要返回一個(gè)迭代器,迭代器自身正是一個(gè)迭代器,所以迭代器的__iter__方法返回自身即可。
- 示例: 斐波那契數(shù)列class FeiboIterator(object):def __init__(self, n):# 斐波那數(shù)列值的個(gè)數(shù)self.n = n# 記錄當(dāng)前遍歷的下標(biāo)self.index = 0# 斐波那數(shù)列前面的兩個(gè)值self.num1 = 0self.num2 = 1def __next__(self):"""被next()函數(shù)調(diào)用來獲取下一個(gè)數(shù)"""if self.index < self.n:num = self.num1self.num1, self.num2 = self.num2, self.num1 + self.num2self.index += 1return numelse:raise StopIterationdef __iter__(self):"""迭代器的__iter__返回自身即可"""return selfif __name__ == '__main__':fb = FeiboIterator(20)for num in fb:print(num, end=' ')```
總結(jié)
以上是生活随笔為你收集整理的阿龙的学习笔记---python相关杂七杂八的记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python量化】如何监测领涨板块,挖
- 下一篇: ygomobile卡组下载网站_游戏王Y