標籤: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