天天看點

python 進階python裝飾器

使用到的函數在python3.5是open,在python2.7同時支援file和open

檔案句柄=open('檔案路徑','打開模式')

檔案句柄相當于變量名。

打開檔案的模式

r :隻讀,檔案必須存在

w:隻寫,檔案不存在則建立,存在則清空

x:隻寫,檔案不可讀,不存在則建立,存在則報錯

a:追加, 檔案不存在則建立,存在則在末尾添加内容

r+:讀寫

w+:寫讀

x+:寫讀

a+:寫讀

rb:二進制讀

wb:二進制寫

xb:二進制隻寫

ab:二進制追加

以b方式打開的,讀取到的内容是位元組内心,寫入時也需要提供位元組類型

rb+:二進制讀寫

wb+:二進制讀寫

xb+:二進制隻寫

ab+:二進制讀寫

read([size]):讀取檔案全部内容,設定了size,讀取size位元組

readline([size]):一行一行的讀取

readlines():讀取到的每一行内容作為清單中的一個元素

write(str):将字元串寫如檔案

writelines(sequence or strings):寫多行到檔案,參數可以是一個可疊代的對象、清單、元組等。

close

flush

isatty

readable

tell

seek

seekable

writable

避免打開檔案後忘記關閉,可以通過管理上下文

with open('log', 'r') as f:

  statement

當with執行完畢時,内部會自動關閉并釋放檔案資源。

with又支援同時對多個檔案的上下文管理

with open('log1') as obj1, open('log2') as obj2:

裝飾器是由函數去生成的,用于裝飾某個函數或者方法或者類,他可以讓這個函數在執行之前或者執行之後做一些操作。

<code>#!/usr/bin/env python</code>

<code># _*_ coding: utf-8 _*_</code>

<code>def</code> <code>decorator(func):  </code><code># 建立一個裝飾器函數,接受的參數arg參數就是func函數名</code>

<code>    </code><code>def</code> <code>inner(</code><code>*</code><code>args, </code><code>*</code><code>*</code><code>kwargs):</code>

<code>        </code><code>print</code><code>(</code><code>"執行函數之前"</code><code>)</code>

<code>        </code><code>ret </code><code>=</code> <code>func(</code><code>*</code><code>args, </code><code>*</code><code>*</code><code>kwargs)</code>

<code>        </code><code>print</code><code>(</code><code>"執行函數之後"</code><code>)</code>

<code>        </code><code>return</code> <code>ret</code>

<code>    </code><code>return</code> <code>inner</code>

<code>@decorator</code>  <code># 如果要讓某個函數使用裝飾器,隻需要在這個函數上面加上@+裝飾器名</code>

<code>def</code> <code>func(arg):</code>

<code>    </code><code>print</code><code>(arg)</code>

<code>func(</code><code>"Hello World!"</code><code>)</code>

多個裝飾器裝飾同一個函數。

<code>def</code> <code>decorator1(func):</code>

<code>    </code><code>def</code> <code>inner():</code>

<code>        </code><code>print</code><code>(</code><code>"開始之前執行裝飾器01"</code><code>)</code>

<code>        </code><code>ret </code><code>=</code> <code>func()</code>

<code>        </code><code>print</code><code>(</code><code>"結束之後執行裝飾器01"</code><code>)</code>

<code>def</code> <code>decorator2(func):</code>

<code>        </code><code>print</code><code>(</code><code>"decorator2&gt;&gt;&gt;Start..."</code><code>)</code>

<code>        </code><code>print</code><code>(</code><code>"decorator2&gt;&gt;&gt;End..."</code><code>)</code>

<code>@decorator1</code>

<code>@decorator2</code>

<code>def</code> <code>index():</code>

<code>    </code><code>print</code><code>(</code><code>"執行函數..."</code><code>)</code>

<code>index()</code>

python正則

python字元串格式化

python疊代器生成器

python反射

python設計模式

python異常處理

本文轉自ting2junshui51CTO部落格,原文連結:http://blog.51cto.com/ting2junshui/1893749 ,如需轉載請自行聯系原作者