国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python_異常和模塊

piglei / 863人閱讀

摘要:例如等價于到結束,但不包括。例如返回沒有每次跳躍的間距,默認為。

異常處理

單個異常處理:

try:
    print(num)

except NameError:
    print("沒有定義變量")

except FileNotFoundError:
    print("找不到文件路徑")

print(1)

多個異常處理:

try:
    print(num)
    # 11/0
    # open("xxx.txt")
except (NameError, FileNotFoundError, ZeroDivisionError): # 多個異常統一處理
    print("異常")

print(1)

所有異常處理:

try:
    print(num)
except Exception: # 所有異常處理
    print("所有異常處理")

print(1)

查看原來異常輸出:

try:
    print(num)
except Exception as err:
    print(err)
print(1)    

沒有異常執行

try:
    a = 1

execpt Exception as err:
    print(err)

else:
    print("沒有異常執行")

finally:
    print("不管是否出現異常, 都執行")

print(1)     

import time
try:
    f = open("test.txt")
    try:
        while True
            content = f.readline()
            if len(content) == 0:
                break
            time.sleep(2)
            print(content)
    except Exception:
        # pass
        print("文件產生異常")
    finally:
        f.close()
        print("關閉文件")
except Exception:
    print("沒有這個文件")

tryexcept需要同時存在
當函數嵌套的時候,如果函數出現異常,會返回異常,然后捕獲到異常

拋出自定義異常

raise: 拋出一個自定義異常

raise語句如果不帶參數,就會把當前錯誤原樣拋出。

def main ():
    try:
        s = input("請輸入-->")
        if len(s) < 3:
            raise ShortInputException(len(s), 3)
        else:
            print(s)
    except ShortInputException as result:
        print("ShortInputException: 輸入的長度是 %d, 長度至少需要是 %d" % (result.length, result.atleast))
    else:
        print("沒有異常發生.")

class ShortInputException(Exception):
    """自定義異常類"""
    def __init__(self, length, atleast):
        # super().__init()
        self.length = length
        self.atleast = atleast

main()
模塊

如何獲取當前模塊的文件名: __file__

引入模塊

import sys導入模塊中的全部功能
from argv import sys, from argv import sys,executable導入模塊中的多帶帶功能
from sys import *
from sys as s 別名

__name__: 用于表示當前模塊的名字,同時還能反映一個包的結構

導入輸出的是當前模塊名

模塊被直接運行時模塊名為:__main__

if __name__ == "__main__": # 如果模塊是被直接運行的,則代碼塊被運行,如果模塊是被導入的,則代碼塊不被運行。
    # code
常用內建模塊
標準庫 說明
builtins 內建函數默認加載
os 操作系統接口 [系統級別的操作(文件和目錄)]
sys Python自身的運行環境 [對解釋器相關的操作]
functools 常用的工具
json & pickle 編碼和解碼 JSON 對象
logging 記錄日志,調試
multiprocessing 多進程
threading 多線程
copy 拷貝
time 時間
datetime 日期和時間
calendar 日歷
hashlib 加密算法
random 生成隨機數
re 字符串正則匹配
socket 標準的 BSD Sockets API
shutil 文件和目錄管理 [高級的 文件、文件夾、壓縮包 處理模塊(遞歸,文件復制等)]
glob 基于文件通配符搜索
shelve 一個簡單的k,v將內存數據通過文件持久化的模塊,可以持久化任何pickle可支持的python數據格式

hashlib

import hashlib
m = hashlib.md5()   # 創建hash對象,md5:(message-Digest Algorithm 5)消息摘要算法,得出一個128位的密文
print m             # 
m.update("alogy")  # 更新哈希對象以字符串參數
print m.hexdigest() # 返回十六進制數字字符串

例子:用于注冊、登錄

import hashlib
import datetime
KEY_VALUE = "alogy"
now = datetime.datetime.now()
m = hashlib.md5()
str = "%s%s" % (KEY_VALUE,now.strftime("%Y%m%d"))
m.update(str.encode("utf-8"))
value = m.hexdigest()
print(value) # c69c59b58209a94f40e6a7a425f9a977
functools
["WRAPPER_ASSIGNMENTS", "WRAPPER_UPDATES", "__builtins__", "__doc__", "__file__", "__name__", "__package__", "cmp_to_key", "partial", "reduce", "total_ordering", "update_wrapper", "wraps"]

partial()

把一個函數的某些參數設置默認值,返回一個新函數,調用這個新函數會更簡單。

import functools

def showarg(*args, **kw):
    print(args)
    print(kw)

p1 = functools.partial(showarg, 1, 2, 3)
p1()
p1(4,5,6)
p1(a="python", b="alogy")

p2 = functools.partial(showarg, a=3, b="linux")
p2()
p2(1, 2)
p2(a="python", b="alogy")

wraps()

使用裝飾器時,被裝飾后等函數其實已經是另外一個函數(函數名等函數屬性會發生變化)

添加后由于函數名和函數的doc發生了改變,對測試結果有一些影響,例如:

def note(func):
    "note function"
    def wrapper():
        "wrapper function"
        print("note something")
        return func()
    return wrapper

@note
def test():
    "test function"
    print("I am test")

test()
print(test.__doc__)

運行結果

note something
I am test
wrapper function

所以,Python的functools包中提供了一個叫wraps的裝飾器來消除這樣的副作用。例如:

import functools
def note(func):
    "note function"
    @functools.wraps(func) # 保存外邊函數名
    def wrapper():
        "wrapper function"
        print("note something")
        return func()
    return wrapper

@note
def test():
    "test function"
    print("I am test")

test()
print(test.__doc__)

運行結果

note something
I am test
test function
常用擴展庫
擴展庫 說明
requests 使用的是 urllib3,繼承了urllib2的所有特性
urllib 基于http的高層庫
scrapy 爬蟲
beautifulsoup4 HTML/XML的解析器
celery 分布式任務調度模塊
redis 緩存
Pillow(PIL) 圖像處理
xlsxwriter 僅寫excle功能,支持xlsx
xlwt 僅寫excle功能,支持xls ,2013或更早版office
xlrd 僅讀excle功能
elasticsearch 全文搜索引擎
pymysql 數據庫連接庫
mongoengine/pymongo mongodbpython接口
matplotlib 畫圖
numpy/scipy 科學計算
django/tornado/flask web框架
xmltodict xml 轉 dict
SimpleHTTPServer 簡單地HTTP Server,不使用Web框架
gevent 基于協程的Python網絡庫
fabric 系統管理
pandas 數據處理庫
scikit-learn 機器學習庫

例如:讀寫excel文件

安裝esay_install工具
sudo apt-get install python-setuptools

安裝模塊
sudo easy_install xlrd
sudo easy_install xlwt

所有內置模塊
import sys
sys.modules.keys()

["builtins", "sys", "_frozen_importlib", "_imp", "_warnings", "_thread", "_weakref", "_frozen_importlib_external", "_io", "marshal", "nt", "winreg", "zipimport", "encodings", "codecs", "_codecs", "encodings.aliases", "encodings.utf_8", "_signal", "__main__", "encodings.latin_1", "io", "abc", "_weakrefset", "site", "os", "errno", "stat", "_stat", "ntpath", "genericpath", "os.path", "_collections_abc", "_sitebuiltins", "sysconfig", "idlelib", "idlelib.run", "linecache", "functools", "_functools", "collections", "operator", "_operator", "keyword", "heapq", "_heapq", "itertools", "reprlib", "_collections", "types", "collections.abc", "weakref", "tokenize", "re", "enum", "sre_compile", "_sre", "sre_parse", "sre_constants", "_loc
ale", "copyreg", "token", "queue", "threading", "time", "traceback", "warnings", "tkinter", "_tkinter", "tkinter.constants", "idlelib.autocomplete", "string", "_string", "idlelib.autocomplete_w", "platform", "subprocess", "signal", "msvcrt", "_winapi", "idlelib.multicall", "idlelib.config", "configparser", "_bootlocale", "encodings.gbk", "_codecs_cn", "_multibytecodec", "idlelib.hyperparser", "idlelib.pyparse", "idlelib.calltips", "inspect", "ast", "_ast", "dis", "opcode", "_opcode", "importlib", "importlib._bootstrap", "importlib._bootstrap_external", "importlib.machinery", "textwrap", "idlelib.calltip_w", "idlelib.debugger_r", "idlelib.debugger", "bdb", "fnmatch", "posixpath", "idlelib.macosx", "idlelib.scrolledlist", "idlelib.windows", "idlelib.debugobj_r", "idlelib.rpc", "pickle", "struct", "_struct", "_compat_pickle", "_pickle", "select", "socket", "_socket", "selectors", "math", "socketserver", "idlelib.iomenu", "shlex", "tempfile", "shutil", "zlib", "bz2", "_compression", "_bz2", "lzma", "_lzma", "random", "hashlib", "_hashlib", "_blake2", "_sha3", "bisect", "_bisect", "_random", "locale", "idlelib.stackviewer", "idlelib.debugobj", "idlelib.tree", "idlelib.zoomheight", "pydoc", "importlib.util", "importlib.abc", "contextlib", "pkgutil", "urllib", "urllib.parse"]

內置全局變量:vars()

{"__name__": "__main__", "__doc__": None, "__package__": None, "__loader__": , "__spec__": None, "__annotations__": {}, "__builtins__": }

第三方模塊:
anaconda: 數十個常用的第三方模塊

內建屬性

python類的內建屬性和方法

["__class__", "__delattr__", "__dict__", "__doc__", "__format__", "__getattribute__", "__hash__", "__init__", "__module__", "__new__", "__reduce__", "__reduce_ex__", "__repr__", "__setattr__", "__sizeof__", "__str__", "__subclasshook__", "__weakref__"]
常用專有屬性 說明 觸發方式
__init__ 構造初始化函數 創建實例后,賦值時使用,在__new__后
__new__ 生成實例所需屬性 創建實例時
__class__ 實例所在的類 實例.__class__
__str__ 實例字符串表示,可讀性 print(類實例),如沒實現,使用repr結果
__repr__ 實例字符串表示,準確性 類實例 回車 或者 print(repr(類實例))
__del__ 析構 del刪除實例
__dict__ 實例自定義屬性 vars(實例.__dict__)
__doc__ 類文檔,子類不繼承 help(類或實例)
__getattribute__ 屬性訪問攔截器 訪問實例屬性時
__bases__ 類的所有父類構成元素 類名.__bases__

__getattribute__例子:

class Person(object):
    def __init__(self, subject1):
        self.subject1 = subject1

    # 屬性訪問時攔截器,打log
    def __getattribute__(self, obj):
        if obj == "subject1":
            print("log subject1")
        return "redirect python"

    def show(self):
        print("this is Person")

p = Person("python")
print(p.subject1)
內建函數

dir(__builtins__)

["ArithmeticError", "AssertionError", "AttributeError", "BaseException", "BufferError", "BytesWarning", "DeprecationWarning", "EOFError", "Ellipsis", "EnvironmentError", "Exception", "False", "FloatingPointError", "FutureWarning", "GeneratorExit", "IOError", "ImportError", "ImportWarning", "IndentationError", "IndexError", "KeyError", "KeyboardInterrupt", "LookupError", "MemoryError", "NameError", "None", "NotImplemented", "NotImplementedError", "OSError", "OverflowError", "PendingDeprecationWarning", "ReferenceError", "RuntimeError", "RuntimeWarning", "StandardError", "StopIteration", "SyntaxError", "SyntaxWarning", "SystemError", "SystemExit", "TabError", "True", "TypeError", "UnboundLocalError", "UnicodeDecodeError", "UnicodeEncodeError", "UnicodeError", "UnicodeTranslateError", "UnicodeWarning", "UserWarning", "ValueError", "Warning", "ZeroDivisionError", "__debug__", "__doc__", "__import__", "__name__", "__package__", "abs", "all", "any", "apply", "basestring", "bin", "bool", "buffer", "bytearray", "bytes", "callable", "chr", "classmethod", "cmp", "coerce", "compile", "complex", "copyright", "credits", "delattr", "dict", "dir", "divmod", "enumerate", "eval", "execfile", "exit", "file", "filter", "float", "format", "frozenset", "getattr", "globals", "hasattr", "hash", "help", "hex", "id", "input", "int", "intern", "isinstance", "issubclass", "iter", "len", "license", "list", "locals", "long", "map", "max", "memoryview", "min", "next", "object", "oct", "open", "ord", "pow", "print", "property", "quit", "range", "raw_input", "reduce", "reload", "repr", "reversed", "round", "set", "setattr", "slice", "sorted", "staticmethod", "str", "sum", "super", "tuple", "type", "unichr", "unicode", "vars", "xrange", "zip"]

range()

range(stop) # 整數列表
range(start, stop[, step]) # 整數列表

strat: 計數從start開始,默認是從0開始。例如:range(5)等價于range(0, 5)

stop: 到stop結束,但不包括stop。例如:range(0, 5), 返回[0, 1, 2, 3, 4]沒有5

step: 每次跳躍的間距,默認為1。例如:range(0, 5)等價于range(0, 5, 1)

map()

map函數會根據提供的函數作為指定序列做映射

map(function, sequence[, sequence, ...]) -> list

function: 一個函數

sequence: 一個或多個序列,取決于function需要幾個參數

返回值是一個list

# 函數需要一個參數
map(lambda x: x*x, [1, 2, 3]) # [1, 4, 9]

# 函數需要兩個參數
map(lambda x, y: x+y, [1, 2, 3], [4, 5, 6]) # [5, 7, 9]


def f1( x, y ):  
    return (x, y)
l1 = [0, 1, 2, 3, 4, 5, 6]  
l2 = ["Sun", "M", "T", "W", "T", "F", "S"]
l3 = map(f1, l1, l2) 
print(list(l3))
# [(0, "Sun"), (1, "M"), (2, "T"), (3, "W"), (4, "T"), (5, "F"), (6, "S")]

filter()

filter()會對指定序列執行過濾操作

filter(function or None, sequence) -> list, tuple, or string

function: 接受一個參數,返回布爾值True或False

sequence: 序列可以是str,tuple, list

返回值list, tuple, string

filter(lambda x: x%2, [1, 2, 3, 4])
[1, 3]

filter(None, "a")
"a"

reduce()

reduce會對參數序列中對元素進行累積

reduce(function, sequence[, initial]) -> value

function:該函數有兩個參數
sequence:序列可以是str,tuple,list
initial:固定初始值

function: 該函數有二個參數

sequence: 序列可以是str, tuple, list

initial: 固定初始值

返回value

reduce(lambda x, y: x+y, [1,2,3,4]) # 10

reduce(lambda x, y: x+y, [1,2,3,4], 5) # 15

reduce(lambda x, y: x+y, ["aa", "bb", "cc"], "dd") # "ddaabbcc"

sorted()

sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

iterable: 迭代器

key: 函數

reverse: 正序,倒序

返回一個新的列表

sorted([1, 4, 2, 6, 3, 5]) # [1, 2, 3, 4, 5, 6]

sorted([1, 4, 2, 6, 3, 5], reverse = 1) # 倒序 # [6, 5, 4, 3, 2, 1]

sorted(["dd", "aa", "cc", "bb"]) # ["aa", "bb", "cc", "dd"]

lst = [3, -19, -1, 28, 7, 0, -2, -5, 7, 8, 0 -3, 9, 0, 11]
sorted(lst, key=lambda x: (x >= 0, -x if x >= 0 else x)) # [-19, -5, -3, -2, -1, 28, 11, 9, 8, 7, 7, 3, 0, 0] ????
sorted(lst, key=lambda x: (x >= 0, -abs(x))) # [-19, -5, -3, -2, -1, 28, 11, 9, 8, 7, 7, 3, 0, 0] ????
模塊中的__all__的作用

__all__只影響from import *這種導入方式

__all__ = ["test"]

def test():
    print("test")
__init__.py的作用

某個文件夾下具有__init.py的,稱之為

__init__.py作用:

package的標識

定義package中的__all__,用來模糊導入

模塊的發布和安裝

新建一個setup.py寫入:

from distutils.core import setup

setup(name="alogy", version="1.0", description="a", author="alogy", py_modules=["suba.aa"]) # suba.aa 包名.模塊名

發布:

> python setup.py build

> python setup.py sdist

安裝:

> python setup.py install
import搜索路徑
import sys
sys.path # sys.path的先后順序
重新導入模塊

模塊被導入后,import module不能重新導入模塊,需要重新導入

from imp import *
reload("module") # module模塊名
調試

pdb是基于命令行的調試工具

運行時啟動
python -m pdb xxx.py

l: list 查看運行的代碼
n: next 往下行執行
c: continue 繼續執行代碼直到結束
b 7b 行數: break 添加斷點(通過c執行)
b: 查看所有斷點
clear 斷點序號: 清除指定斷點
s: step 進入當前作用域中
p 變量名: 查看指定變量名的值
a: 查看所有當前作用域的變量名和變量值
q: quit 退出調試
r: return 快速執行到函數最后一行

交互式調試
import pdb
pdb.run("testfun(args)") # 此時會打開pdb調試,注意:先使用s跳轉到testfun函數中,然后可以使用
程序里埋點

當程序執行到pbd.set_trace()位置時停下來調試

import pdb

pdb.set_trace()
package

常用內置模塊:
sys: 系統模塊, 程序與python解釋器的交互, 用于操控python的運行時環境
os: 操作系統模塊, 程序與操作系統的交互, 系統操作IO等行為
timedatetime: 時間模塊
re: 正則
json: json處理
urllib: 網絡處理
random: 隨機

不常用內置模塊:
itertools: 一些特殊的函數可以操作可迭代對象或者排列組合
copy: 拷貝的函數(賦值一般是傳遞對象的引用,修改一個對象,會導致其它對象也受到改變)
string: String模塊包含大量實用常量和類

Naked

Naked: 一個Python命令行應用程序框架. 可用于執行JS代碼

from Naked.toolshed.shell import execute_js, muterun_js
import sys

response = muterun_js("file.js")
if response.exitcode == 0:
  print(response.stdout)
else:
  sys.stderr.write(str(response.stderr))
shutil

用于復制和歸檔文件和目錄樹的實用函數。

# 清dist目錄
clearDist = (len(sys.argv) == 4 and (sys.argv[3] == "--clear"))
if clearDist:
    shutil.rmtree("./dist/")
subprocess

訪問I/O流的子進程

# 編譯vue
buildStat = subprocess.call("node build/build.js " + webPath + " " + verPath, shell=True)
if buildStat != 0:
    print("vue 編譯錯誤")
    sys.exit(1)
six

Python 2和3兼容庫

import six


def bytes_to_str(s, encoding="utf-8"):
    """Returns a str if a bytes object is given."""
    if six.PY3 and isinstance(s, bytes):
        return s.decode(encoding)
    return s
其它
給程序傳遞參數
import sys

print(sys.argv) # 接收運行時接受的參數
終止程序運行
import sys
sys.exit(1)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41403.html

相關文章

  • python模塊之sys

    摘要:返回的信息特定于當前線程以及當前堆棧幀。出于某些原因,這個值可能無法計算,將返回返回安卓版本的構建時間,以整數表示。僅適用于安卓平臺返回解釋器的檢查間隔。可操作此屬性實現強制重新加載模塊等。 sys模塊提供對由解釋器使用或維護的某些變量、與解釋器交互的函數的訪問接口。 sys.abiflags 在使用標準configure腳本構建python的POSIX系統上,該屬性包含了PEP 31...

    csRyan 評論0 收藏0
  • Python標準庫---16、內置類型:上下文管理器類型、其他、特殊屬性

    摘要:退出運行時上下文并返回一個布爾值旗標來表明所發生的任何異常是否應當被屏蔽。除了實現上下文管理協議以外,不同類型不會被特殊處理。其中一些并不會被內置函數所列出。 上一篇文章:Python標準庫---15、內置類型:集合類型、映射類型下一篇文章:Python標準庫---17、內置異常 上下文管理器類型 Python 的 with 語句支持通過上下文管理器所定義的運行時上下文這一概念。 此...

    zhisheng 評論0 收藏0
  • 調試分析Python腳本

    摘要:調試器可幫助程序員分析完整的代碼。我們將使用標準庫中的模塊調試我們的腳本。例外是程序執行期間發生的錯誤。設置斷點并檢查堆棧幀,并列出源代碼。輸入以繼續調試。分析和計時程序分析程序意味著測量程序的執行時間。的模塊用于分析程序。 showImg(https://segmentfault.com/img/remote/1460000018807029?w=902&h=442); 來源 | ...

    wenzi 評論0 收藏0
  • Python2 Python3 的區別及兼容技巧

    摘要:前言最近之父龜爺終于在官方郵件組落實了的終焉之日。于之后的年月日發布,計劃作為的最后一個版本。統一使用作為縮進,如果和同時存在,就會觸發異常兼容技巧統一使用作為縮進。兼容技巧統一使用內置函數。統一輸出函數中的即是關鍵字又是內置函數。 前言 最近 Python 之父 Guido van Rossum(龜爺)終于在 Python 官方郵件組落實了 Python 2.7 的終焉之日(EOL)...

    lmxdawn 評論0 收藏0
  • 詳解python2python3的區別

    摘要:認為有極大的優化空間,在字符串和整形操作上可以取得很好的優化結果。的和方法返回迭代器,而之前的等函數都被廢棄。python有兩個主要的版本,python2 和 python3 ,但是python又不同于其他語言,向下兼容,python3是不向下兼容的,但是絕大多數組件和擴展都是基于python2的,下面就來總結一下python2和python3的區別。 ? 1.性能? Py3.0運...

    Sourcelink 評論0 收藏0

發表評論

0條評論

piglei

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<