Day-5

Python裝飾器原理

    裝飾器是函數,只不過該函數可以具有特殊的含義,裝飾器用來裝飾函數或類,使用裝飾器可以在函數執行前和執        行後添加相應操作。

    例如:

import functools



def wrapper(func):

    @functools.wraps(func)

    def wrapper():

        print 'before'

        func()

        print 'after'

    return wrapper


@wrapper

def foo():

    print 'foo'

例如:

#!/usr/bin/env python

#coding:utf-8

 

def Before(request,kargs):

    print 'before'

     

def After(request,kargs):

    print 'after'

 

 

def Filter(before_func,after_func):

    def outer(main_func):

        def wrapper(request,kargs):

             

            before_result = before_func(request,kargs)

            if(before_result != None):

                return before_result;

             

            main_result = main_func(request,kargs)

            if(main_result != None):

                return main_result;

             

            after_result = after_func(request,kargs)

            if(after_result != None):

                return after_result;

             

        return wrapper

    return outer

     

@Filter(Before, After)

def Index(request,kargs):

    print 'index'

     

     

if __name__ == '__main__':

    Index(1,2)


Python遞歸原理

    

利用函數編寫如下數列:

斐波那契數列指的是這樣一個數列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368

例如:

def func(arg1,arg2):

    if arg1 == 0:

        print arg1, arg2

    arg3 = arg1 + arg2

    print arg3

    func(arg2, arg3)


func(0,1)


demo

模塊,用一砣代碼實現了某個功能的代碼集合。 

類似於函數式編程和麪向過程編程,函數式編程則完成一個功能,其他代碼用來調用即可,提供了代碼的重用性和代碼間的耦合。而對於一個複雜的功能來,可能需要多個函數才能完成(函數又可以在不同的.py文件中),n個 .py 文件組成的代碼集合就稱爲模塊。

如:os 是系統相關的模塊;file是文件操作相關的模塊

模塊分爲三種:

  • 自定義模塊

  • 內置模塊

  • 開源模塊

1、定義模塊

自己定義的模塊

2、導入模塊

Python之所以應用越來越廣泛,在一定程度上也依賴於其爲程序員提供了大量的模塊以供使用,如果想要使用模塊,則需要導入。導入模塊有一下幾種方法:

1
2
3
4
import module
from module.xx.xx import xx
from module.xx.xx import xx as rename  
from module.xx.xx import *

導入模塊其實就是告訴Python解釋器去解釋那個py文件

  • 導入一個py文件,解釋器解釋該py文件

  • 導入一個包,解釋器解釋該包下的 __init__.py 文件

內置模塊

一、os

os.getcwd() 獲取當前工作目錄,即當前python腳本工作的目錄路徑

os.chdir("dirname")  改變當前腳本工作目錄;相當於shell下cd

os.curdir  返回當前目錄: ('.')

os.pardir  獲取當前目錄的父目錄字符串名:('..')

os.makedirs('dirname1/dirname2')    可生成多層遞歸目錄

os.removedirs('dirname1')    若目錄爲空,則刪除,並遞歸到上一級目錄,如若也爲空,則刪除,依此類推

os.mkdir('dirname')    生成單級目錄;相當於shell中mkdir dirname

os.rmdir('dirname')    刪除單級空目錄,若目錄不爲空則無法刪除,報錯;相當於shell中rmdir dirname

os.listdir('dirname')    列出指定目錄下的所有文件和子目錄,包括隱藏文件,並以列表方式打印

os.remove()  刪除一個文件

os.rename("oldname","newname")  重命名文件/目錄

os.stat('path/filename')  獲取文件/目錄信息

os.sep    輸出操作系統特定的路徑分隔符,win下爲"\\",Linux下爲"/"

os.linesep    輸出當前平臺使用的行終止符,win下爲"\t\n",Linux下爲"\n"

os.pathsep    輸出用於分割文件路徑的字符串

os.name    輸出字符串指示當前使用平臺。win->'nt'; Linux->'posix'

os.system("bash command")  運行shell命令,直接顯示

os.environ  獲取系統環境變量

os.path.abspath(path)  返回path規範化的絕對路徑

os.path.split(path)  將path分割成目錄和文件名二元組返回

os.path.dirname(path)  返回path的目錄。其實就是os.path.split(path)的第一個元素

os.path.basename(path)  返回path最後的文件名。如何path以/或\結尾,那麼就會返回空值。即os.path.split(path)的第二個元素

os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False

os.path.isabs(path)  如果path是絕對路徑,返回True

os.path.isfile(path)  如果path是一個存在的文件,返回True。否則返回False

os.path.isdir(path)  如果path是一個存在的目錄,則返回True。否則返回False

os.path.join(path1[, path2[, ...]])  將多個路徑組合後返回,第一個絕對路徑之前的參數將被忽略

os.path.getatime(path)  返回path所指向的文件或者目錄的最後存取時間

os.path.getmtime(path)  返回path所指向的文件或者目錄的最後修改時間

二、sys

sys.argv           命令行參數List,第一個元素是程序本身路徑

sys.exit(n)        退出程序,正常退出時exit(0)

sys.version        獲取Python解釋程序的版本信息

sys.maxint         最大的Int值

sys.path           返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值

sys.platform       返回操作系統平臺名稱

sys.stdout.write('please:')

val = sys.stdin.readline()[:-1]



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