從零開始學Python-day6

來源:互聯網
上載者:User

標籤:flask、python

Python--Day6


學習要有定位,明確目標地去學習。希望自己能堅持下去,並有所收穫---leaves


python05 -- python函數、檔案小講以及模組和初識flask Web架構



一、檔案處理及相關函數

open(檔案路徑,開啟模式) 或者with open() as f:

    讀寫、追加檔案

    資料庫


    #configparse 設定檔寫成一個字典

    read   readline  readlines  

    write  writelines


    檔案指標函數  

    tell()   檔案指標的位置  

    seek()    移動指標

    flush()    將記憶體寫入到硬碟上


二、函數

    **python核心思想: 函數化編程  ==>重點


2.1 函數概念

   函數:python編程中基本的單元

        def  函數名(參數可忽略):

            函數體

            return  傳回值


2.2 函數的主要理解:函數式編程 FP


    一、注意理解hello 和 hello()的區別,前者是抽象的函數,後者是具體的傳回值

    二、函數可以是參數,進行傳遞


##程式碼範例

In [1]: def fishing():   ...:     print "diaoyu is good "   ...:     return ‘fish‘In [3]: fishing()diaoyu is good Out[3]: ‘fish‘In [5]: def doSth(fn):   ...:     print fn() + ‘is got ‘   ...:     return ‘ok‘ In [6]: doSth(fishing)diaoyu is good fishis got Out[6]: ‘ok‘###sorted()函數配合lambda匿名函數實現排序In [7]: arr = [(‘age‘,1),(‘age‘,19),(‘age‘,51),(‘age‘,13),(‘age‘,31),(‘age‘,41),(‘age‘,12)]In [8]: print sorted(arr,key=lambda x:x[1])[(‘age‘, 1), (‘age‘, 12), (‘age‘, 13), (‘age‘, 19), (‘age‘, 31), (‘age‘, 41), (‘age‘, 51)]


三、模組


3.1 模組定義


   模組:簡單的理解,模組就是檔案,我們可以把一個功能存在一個檔案中,通過import調用.


3.2 模組的分類

    模組整體上分為三類:

    1.python內建的模組,如sys,os,math,random,time模組等


    2.第三方開發人員開發的模組,可以通過pip install 安裝,然後import調用匯入使用,如flask,requests,pyquery,psutil等


    3.自己開發的模組

     引申:python中檔案夾預設不能匯入的,如果需要匯入檔案夾的話需要添加__init__.py檔案,__init__.py檔案可以為空白,其主要目的是使檔案夾變成包以達到可以匯入的目的.

      調用格式:from  "檔案目錄名" import "匯入的函數"


##自己開發的模組樣本:

##自己編寫的模組[[email protected] code]# pwd/usr/local/src/newbie/05/code##檔案編寫的模組內容[[email protected] code]# cat hello.pydef hello_world():print "hello world"##ipython中匯入模組及使用In [1]: import helloIn [3]: print hello.hello_world()hello worldNoneIn [4]: pwdOut[4]: u‘/usr/local/src/newbie/05/code‘



3.3 模組調用的方式

  模組的使用主要有三種方式:

    

    1.import  模組名

        調用:模組名.函數名()


    2. from 模組名  import  函數名

        調用:函數名()


    3. from  模組名   import  * 

        調用:函數名()  #匯入模組中所有函數,不推薦使用 


3.3.1  import的尋找路徑順序:

    當前路徑---> systempath(系統路徑)

    1.當前路徑:目前的目錄

    2.systempath

    3. 檔案名稱不要和模組名重複以免調用異常


##systempath 的查看方法:import syssys.pathIn [7]: sys.pathOut[7]:[‘‘,‘/usr/local/python27/bin‘,‘/usr/local/python27/lib/python27.zip‘,‘/usr/local/python27/lib/python2.7‘,‘/usr/local/python27/lib/python2.7/plat-linux2‘,‘/usr/local/python27/lib/python2.7/lib-tk‘,‘/usr/local/python27/lib/python2.7/lib-old‘,‘/usr/local/python27/lib/python2.7/lib-dynload‘,‘/usr/local/python27/lib/python2.7/site-packages‘,‘/usr/local/python27/lib/python2.7/site-packages/IPython/extensions‘,‘/root/.ipython‘]


3.3.2 **注意import 會把模組裡的代碼執行一遍


#範例程式碼

[[email protected] code]# python run.py Welcome Module Hellohello worldNone[[email protected] code]# cat hello.pydef hello_world():print "hello world"print "Welcome Module Hello"[[email protected] code]# cat run.py import helloprint hello.hello_world()[[email protected] code]# [[email protected] code]# python run.py Welcome Module Hellohello worldNone


3.3.3 import模組出現的矛盾

    問題,如3.3.2中的代碼,如果引入的時候我不希望執行hello_world()函數外邊的print語句,該怎麼解決呢。

    

    為瞭解決引入模組時執行該引入模組中不需要的東西,所以Python中添加判斷來解決

    if __name__ == "__main__":

        代碼塊

    將所引入模組其本身才需要執行的代碼放到if判斷內,以防止調用被隨意的執行。


#範例程式碼如下:

##run.py 的內容[[email protected] code]# cat run.py import helloprint hello.hello_world()##hello.py的內容[[email protected] code]# cat hello.pydef hello_world():print "hello world"if __name__ == ‘__main__‘:  #<====練習__name__變數print "Welcome Module Hello"[[email protected] code]# python run.py hello worldNone[[email protected] code]#

       
3.3.4 python內建變數__name__


    __name__:該變數主要是為了識別執行的.py檔案是否為函數的檔案本身執行的,如果__name__ == "__main__"則證明是其本身執行的,否則,該函數被調用執行的。這時候__name__等於被調用的檔案名稱。


####__name__ == "__main__"的情況##主檔案的內容[[email protected] code]# cat hello.pydef hello_world():print "hello world"print" __name__  == ‘%s‘ " %(__name__)if __name__ == ‘__main__‘:hello_world()print "Welcome Module Hello"[[email protected] code]# ###執行主檔案的結果[[email protected] code]# python hello.pyhello world __name__  == ‘__main__‘ Welcome Module Hello###被調用的執行情況:###被引用的hello.py檔案[[email protected] code]# cat hello.pydef hello_world():print "hello world"print" __name__  == ‘%s‘ " %(__name__)if __name__ == ‘__main__‘:hello_world()print "Welcome Module Hello"[[email protected] code]# ###主程式檔案run.py的內容[[email protected] code]# cat run.py import helloprint hello.hello_world()##程式的執行結果,非主程式執行的話,__name__等於被調用的檔案名稱。[[email protected] code]# python run.py  __name__  == ‘hello‘ hello worldNone


四、 Web開發之flask模組


4.1 安裝flask

    pip install -y flask

##安裝flask[[email protected] code]#pip install -y flask ##查看flask是否安裝[[email protected] code]# pip list |grep Flask Flask (0.11.1)Flask-JSONRPC (0.3.1)[[email protected] code]#


4.2 Web開發介紹

    隨著php、python、javascript等指令碼語言大爆發,導致web開發也進入新的時代.


    URL:統一資源識別項

     協議://網域名稱:連接埠/資源地址?攜帶的參數1=2&參數2=3#頁面錨點

    URI:統一資源定位器

 

    網路通訊協定五元組(網路通訊協定、使用者ip、使用者連接埠、服務ip、服務連接埠)


    Web開發架構之flask與djiago對比

        flask :

            簡潔 、上手迅速 。第三方定製容易

        django :

        大而全,用第三方的定製比較難,不過django 已經很全了。文檔很全面



4.3 第一個flask程式

  flask的調用格式:

[[email protected] code]# cat flask_web.py#引入flask的啟動模組,寫死的from flask import Flask##new app(建立一個flask的app也是寫死的)app = Flask(__name__)##監聽路由,就是url在網域名稱和連接埠後面的##當網域名稱和連接埠後面,只有一個/的時候,這個路由觸發@app.route(‘/‘)##路由對應的處理函數,觸發路由的時候執行#處理函數的傳回值,顯示在瀏覽器def  index():return  "hello index"@app.route(‘/test‘)def  test():return  "hello test"if __name__ == "__main__":        ##啟動app,監聽連接埠portapp.run(host=‘0.0.0.0‘,port=888,debug=True)


   結果如下:注意是監聽路由出發後的處理函數傳回值,在瀏覽器端顯示


本文出自 “11931192” 部落格,謝絕轉載!

從零開始學Python-day6

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.