从零开始学Python-day6
Python--Day6学习要有定位,明确目标地去学习。希望自己能坚持下去,并有所收获---leaves
python05 -- python函数、文件小讲以及模块和初识flask Web框架
一、文件处理及相关函数
open(文件路径,打开模式) 或者with open() as f:
读写、追加文件
数据库
#configparse 配置文件写成一个字典
read readlinereadlines
writewritelines
文件指针函数
tell() 文件指针的位置
seek() 移动指针
flush() 将内存写入到硬盘上
二、函数
**python核心思想: 函数化编程==>重点
2.1 函数概念
函数:python编程中基本的单元
def函数名(参数可忽略):
函数体
return返回值
2.2 函数的主要理解:函数式编程 FP
一、注意理解hello 和 hello()的区别,前者是抽象的函数,后者是具体的返回值
二、函数可以是参数,进行传递
##代码示例
In : def fishing():
...: print "diaoyu is good "
...: return 'fish'
In : fishing()
diaoyu is good
Out: 'fish'
In : def doSth(fn):
...: print fn() + 'is got '
...: return 'ok'
In : doSth(fishing)
diaoyu is good
fishis got
Out: 'ok'
###sorted()函数配合lambda匿名函数实现排序
In : arr = [('age',1),('age',19),('age',51),('age',13),('age',31),('age',41),('age',12)]
In : print sorted(arr,key=lambda x:x)
[('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 "导入的函数"
##自己开发的模块示例:
##自己编写的模块
# pwd
/usr/local/src/newbie/05/code
##文件编写的模块内容
# cat hello.py
def hello_world():
print "hello world"
##ipython中导入模块及使用
In : import hello
In : print hello.hello_world()
hello world
None
In : pwd
Out: u'/usr/local/src/newbie/05/code'
3.3 模块调用的方式
模块的使用主要有三种方式:
1.import模块名
调用:模块名.函数名()
2. from 模块名import函数名
调用:函数名()
3. from模块名 import*
调用:函数名()#导入模块中所有函数,不推荐使用
3.3.1import的查找路径顺序:
当前路径---> systempath(系统路径)
1.当前路径:当前目录
2.systempath
3. 文件名不要和模块名重复以免调用异常
##systempath 的查看方法:
import sys
sys.path
In : sys.path
Out:
['',
'/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 会把模块里的代码执行一遍
#示例代码
# python run.py
Welcome Module Hello
hello world
None
# cat hello.py
def hello_world():
print "hello world"
print "Welcome Module Hello"
# cat run.py
import hello
print hello.hello_world()
#
# 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 的内容
# cat run.py
import hello
print hello.hello_world()
##hello.py的内容
# cat hello.py
def hello_world():
print "hello world"
if __name__ == '__main__':#
单选框
男
女
多选框
吃饭
睡觉
##时间和颜色
执行的结果图:
1.form结果图
2.单选多选框结果图
3. 时间颜色结果图
5.3 其他常用标签
一段话:一段话
换行,也没有闭合标签
一个横线
锚点,超链接。 锚点的href属性是跳转
图片标签,src属性是图片的地址
按钮
盒子,没有默认样式
默认的行内模式
HTML代码练习:
按钮
tes图 p 标签
登录
执行结果图如下:
5.4 form标签结合flask实现前端提交注册用户名密码
实现注册的代码:要求,通过/的index主页访问,在name和password框中输入用户名密码,点击add提交按钮直接写入到users.txt文件中,而后跳转到/web4页面列举出所有的用户名密码。
# cat web2.py
#/usr/bin/python
#coding:utf-8
###第二个web程序,练习form标签,熟悉前端向后端提交数据的流程
from flask import Flask,render_template,redirect,request
app = Flask(__name__)
@app.route('/')
def index():
return render_template('form.html')
@app.route('/adduser')
def adduser():
name = request.args.get('name','')
passw = request.args.get('password','')
with open('users.txt','a+') as files:
files.write('%s:%s\n' %(name,passw))
return redirect("/web4")
@app.route('/web4')
def web4():
# tmp =request.args.get('word','web3')
# age =request.args.get('age',14)
#arr = [{'name':'one','age':14},{'name':'two','age':32},{'name':'three','age':9}]
f = open('users.txt')
arr = [ line.split(":")for line in f.read().split('\n') ]
print arr
# return render_template('web3_2.html',word = tmp,age = age ,arr = arr)
return render_template('web3_2.html',arr = arr)
if __name__ == "__main__":
app.run(host='0.0.0.0',port=888,debug=True)
执行流程及结果:
页:
[1]