首页 > 代码库 > 从零开始学Python-day6

从零开始学Python-day6

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 "导入的函数"


##自己开发的模块示例:

##自己编写的模块

[root@xiaowei code]# pwd
/usr/local/src/newbie/05/code
##文件编写的模块内容
[root@xiaowei code]# cat hello.py
def hello_world():
	print "hello world"
	
	
##ipython中导入模块及使用
In [1]: import hello
In [3]: print hello.hello_world()
hello world
None
In [4]: pwd
Out[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 sys
sys.path
In [7]: sys.path
Out[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 会把模块里的代码执行一遍


#示例代码

[root@xiaowei code]# python run.py 
Welcome Module Hello
hello world
None
[root@xiaowei code]# cat hello.py
def hello_world():
	print "hello world"
print "Welcome Module Hello"
[root@xiaowei code]# cat run.py 
import hello
print hello.hello_world()
[root@xiaowei code]# 
[root@xiaowei code]# python run.py 
Welcome Module Hello
hello world
None


3.3.3 import模块出现的矛盾

    问题,如3.3.2中的代码,如果引入的时候我不希望执行hello_world()函数外边的print语句,该怎么解决呢。

    

    为了解决引入模块时执行该引入模块中不需要的东西,所以Python中添加判断来解决

    if __name__ == "__main__":

        代码块

    将所引入模块其本身才需要执行的代码放到if判断内,以防止调用被随意的执行。


#示例代码如下:

##run.py 的内容
[root@xiaowei code]# cat run.py 
import hello
print hello.hello_world()

##hello.py的内容
[root@xiaowei code]# cat hello.py
def hello_world():
	print "hello world"
if __name__ == ‘__main__‘:  #<====练习__name__变量
	print "Welcome Module Hello"

	[root@xiaowei code]# python run.py 
hello world
None
[root@xiaowei code]#

       
3.3.4 python自带变量__name__


    __name__:该变量主要是为了识别执行的.py文件是否为函数的文件本身执行的,如果__name__ == "__main__"则证明是其本身执行的,否则,该函数被调用执行的。这时候__name__等于被调用的文件名。


####__name__ == "__main__"的情况

##主文件的内容
[root@xiaowei code]# cat hello.py
def hello_world():
	print "hello world"
	print" __name__  == ‘%s‘ " %(__name__)

if __name__ == ‘__main__‘:
	hello_world()
	print "Welcome Module Hello"
	
[root@xiaowei code]#
 
###执行主文件的结果
[root@xiaowei code]# python hello.py
hello world
 __name__  == ‘__main__‘ 
Welcome Module Hello



###被调用的执行情况:


###被引用的hello.py文件
[root@xiaowei code]# cat hello.py
def hello_world():
	print "hello world"

print" __name__  == ‘%s‘ " %(__name__)

if __name__ == ‘__main__‘:
	hello_world()
	print "Welcome Module Hello"
[root@xiaowei code]# 

###主程序文件run.py的内容
[root@xiaowei code]# cat run.py 
import hello

print hello.hello_world()

##程序的执行结果,非主程序执行的话,__name__等于被调用的文件名。

[root@xiaowei code]# python run.py 
 __name__  == ‘hello‘ 
hello world
None


四、 Web开发之flask模块


4.1 安装flask

    pip install -y flask

##安装flask
[root@xiaowei code]#pip install -y flask 

##查看flask是否安装
[root@xiaowei code]# pip list |grep Flask 
Flask (0.11.1)
Flask-JSONRPC (0.3.1)
[root@xiaowei 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的调用格式:

[root@xiaowei 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,监听端口port
	app.run(host=‘0.0.0.0‘,port=888,debug=True)


   结果如下:注意是监听路由出发后的处理函数返回值,在浏览器端显示


本文出自 “11931192” 博客,谢绝转载!

从零开始学Python-day6