我的python学习--第五天

一、函数的定义:

def 函数名(name,age=20,*params):

函数体

return 返回值

示例:

def hello():
    print ‘hello world‘               # print表示要表达的一段话
    return ‘hello‘                    # return表示函数的返回值

def dosth(fn):
    print fn+‘ everyone‘              # 函数中还可以调用函数

hello()
dosth(hello())

[[email protected] python]# python hello.py 
hello world
hello world
hello everyone

二、模块

简单的理解,模块就是文件,我们可以使用import,把其他文件的内容引入,进行使用

模块整体分为三种:

1、python自带的模块,比如sys、math、random、os、time等

2、第三方的开发者开发的模块,可以通过pip install安装,然后用import导入,比如flask requests,pyquery,psutil等

3、自己开发的模块

import的模块查找路径:

1、当前目录

2、pythonpath全局路径

注:自己创建的文件名不要与模块名相同,不然导入时,导入的将是创建的文件而不是模块

三、Flask

Flask是一个使用Python编写的轻量级Web应用框架。其WSGI工具箱采用Werkzeug,模板引擎则使用Jinja2。

1、安装flask框架

[[email protected] python]# yum install -y python-pip
[[email protected] python]# pip install flask

2、写一个hello world

#!/usr/bin/python
#coding:utf-8

from flask import Flask                          # 引入flask的启动模块
app = Flask(__name__)                            # 创建一个app

@app.route(‘/‘)                                  # 监听路由,即url
def index():                                     # 路由对应的处理函数
    return ‘hello world!‘

if __name__==‘__main__‘:
    app.run(host=‘0.0.0.0‘,port=‘8888‘)          # 启动app,监听在8888端口

运行结果

3、使用request

request里面包含一次网络请求所有的内容,所有get的url参数都在request.args这个变量里,request.args是一个类似字典的数据,flask通过request.args.get获取前端url给的参数

#!/usr/bin/python
#coding:utf-8

from flask import Flask,request                  
app = Flask(__name__)

@app.route(‘/‘)
def index():
    return ‘hello world!‘

@app.route(‘/hello‘)
def hello():
    name = request.args.get(‘name‘,‘world‘)            # 获取请求的参数
    return ‘hello %s‘%name

if __name__==‘__main__‘:
    app.run(host=‘0.0.0.0‘,port=‘8888‘)

在url中通过name=Alice传入参数

4、使用模板

#!/usr/bin/python
#coding:utf-8

from flask import Flask,request,render_template
app = Flask(__name__)

@app.route(‘/‘)
def index():
    return ‘hello world!‘

@app.route(‘/hello‘)
def hello():
    name = request.args.get(‘name‘,‘world‘)                 # 获取参数
    return render_template(‘hello.html‘,name=name)          # 将参数传入模板
#    return ‘hello %s‘%name 

if __name__==‘__main__‘:
    app.run(host=‘0.0.0.0‘,port=‘8888‘)

模板文件hello.html

Hello,my name is {{name}}

运行结果

当使用模板时,render_template会自动到当前目录下的templates目录下去查找请求的html文件,并将参数替换

flask使用的是jinja2模板语言:

{{...}}包裹的表示变量

{%...%}包裹的是python的语句

循环语法:

{% for x in arr%}

...

{%endfor%}

循环结束,if同理

5、redirect跳转

#!/usr/bin/python
#coding:utf-8

from flask import Flask,request,render_template,redirect
app = Flask(__name__)

@app.route(‘/‘)
def index():
    name = request.args.get(‘name‘)
    pwd = request.args.get(‘password‘)
    if name==‘admin‘ and pwd==‘admin‘:               # 用户名密码为admin,就跳转
        return redirect(‘/admin‘)
    else:
        return ‘hello %s‘%name                      

@app.route(‘/admin‘)
def hello():
    with open(‘user.txt‘,) as fo:
        names = [names.split(‘:‘) for names in fo.read().split(‘\n‘)] # 显示已有的账户密码
    return render_template(‘user.html‘,names=names)

if __name__==‘__main__‘:
    app.run(host=‘0.0.0.0‘,port=‘8888‘)

user.html文件

<table border=‘1‘>
    <thead>
        <tr>
            <td> Name </td>
            <td> Password </td>
        </tr>
    </thead>
    <tbody>
        {% for name in names %}
        {% if name[0] and name[1] %}
        <tr>
            <td>{{name[0]}}</td>
            <td>{{name[1]}}</td>
        </tr>
        {%endif%}
        {%endfor%}
    </tbody>
</table>

显示结果:

非admin用户

admin用户和密码

跳转后

6、在5的基础上将添加用户功能进行美化

#!/usr/bin/python
#coding:utf-8

from flask import Flask,request,render_template,redirect
app = Flask(__name__)

@app.route(‘/‘)
def index():
    return ‘hello world‘

@app.route(‘/useradd‘)
def useradd():
    name = request.args.get(‘name‘)
    pwd = request.args.get(‘password‘)
    if name and pwd:
        with open(‘user.txt‘,‘a+‘) as fo:
            fo.write(‘%s:%s\n‘%(name,pwd))
        return redirect(‘/admin‘)
    else:
        return ‘need user and password‘

@app.route(‘/admin‘)
def hello():
    with open(‘user.txt‘,) as fo:
        names = [names.split(‘:‘) for names in fo.read().split(‘\n‘)]

    return render_template(‘user.html‘,names=names)

if __name__==‘__main__‘:
    app.run(host=‘0.0.0.0‘,port=‘8888‘)

user.html代码为:

<form action=‘/useradd‘>
    name:<input type=‘text‘ name=‘name‘>
    password:<input type=‘text‘ name=‘password‘>
    <input type=‘submit‘ value=‘add‘>
</form>

<table border=‘1‘>
    <thead>
        <tr>
            <td> Name </td>
            <td> Password </td>
        </tr>
    </thead>
    <tbody>
        {% for name in names %}
        {% if name[0] and name[1] %}
        <tr>
            <td>{{name[0]}}</td>
            <td>{{name[1]}}</td>
        </tr>
        {%endif%}
        {%endfor%}
    </tbody>
</table>

运行结果:

7、html常见标签

table:后端向前端展示数据

form:前段向后端提交数据

action:提交的地址(url)

input:输入框

type:输入类型

text:文本

submit:提交按钮

value:按钮上的文字

password:密码已点或星显示

checkbox:多选框

radio:单选框

name:字段名

8、其他常见标签:

p:一段话

br:换行

hr:一个横线

a herf="":锚点(超链接)

img:图片标签

widh:宽度

height:高度

时间: 2024-10-12 00:52:52

我的python学习--第五天的相关文章

python学习第五天 - for...in...循环

for..in语句是另一个循环语句,它迭代一个对象的序列,例如经历序列中的第一项.在后面的章节,我们将会看到更多关于序列的细节.现在,你需要知道的是一个序列只是一个有序的项目的集合. 例如 (保存为 for.py): for i in range(1,5): print(i) else: print('for循环结束') >>> ================================ RESTART ================================ >&g

python学习笔记(五):装饰器、生成器、内置函数、json

这周学习了装饰器和生成器,写下博客,记录一下装饰器和生成器相关的内容. 一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里面每个函数都加一个功能,用来统计每个函数的运行时间是多少,找出来运行比较慢的函数,来优化代码,就需要添加一个新的功能,来统计程序的运行时间,那这样的话,就得修改每个函数了,需要改代码,但是代码特别多,改完了公司倒闭了,这时候装饰

Python学习十五:sorted()

sorted()是Python内置的一个高阶函数,可以实现对list的排序,它还可以接收一个比较函数来实现自定义的排序. 现在有一个list : [36, 5, 12, 9, 21] 我们分别对这个list进行如下操作: 1.对list进行排序,使用sorted直接排序即可: print sorted([36, 5, 12, 9, 21]) 2.对list进行倒序排序,可以自定一个方法: def reversed_cmp(x, y): if x > y: return -1 if x < y:

Python学习(五)函数 —— 内置函数 lambda filter map reduce

Python 内置函数 lambda.filter.map.reduce Python 内置了一些比较特殊且实用的函数,使用这些能使你的代码简洁而易读. 下面对 Python 的 lambda.filter.map.reduce 进行初步的学习. lambda 匿名函数 lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值. lambda语句构建的其实是一个函数对象,参考下例来感受下 lambda 匿名函数: 1 def f(i): # 用户自定义返回平方数 2 retur

python学习(五)

第五章 条件.循环和其他语句 5.1 print和import的更多信息 5.1.1 使用逗号输出 >>> print('age',43,45)         // 可以用逗号隔开多个表达式,中间会有空格age 43 45 5.1.2 把某事件作为另外事件的导入 import somemodule from somemodule improt aaa, bbb, ccc from somemodule import * 如果两个模块有同名函数怎么办? 第一种方法可以用模块引用: mod

Python学习笔记五(模块与包)

一.模块 1.模块介绍 一个模块就是包含了一组功能的python文件,可以通过import导入模块使用. python中模块分为四个类别: a) 使用python编写的.py文件 b) 已被编译为共享库或DLL的C或C++扩展 c) 把一系列模块组织到一起的文件夹,文件夹内有__init__.py文件,称该文件夹为包 d) 使用C编写并链接到python解释器的内置模块 定义my_module.py模块,模块名为my_module print("from my_module.py")

Python学习笔记五_数据类型(字符串)

已经学习过的数据类型包括:int.float.list.tuple.dict.这篇来单独记录下字符串.单独将字符串这种数据类型写出来,是因为python里有很多非常有用的字符串内置方法. 一.字符串定义 字符串可以存任意类型的字符串,比如名字,一句话等等. 1 name = 'Rebecca' 2 msg = 'Fighting' 二.字符串内置方法 1.常用方法 输出为字符串的方法 a = 'my name is Rebecca' print(a.capitalize()) #将字符串的第一个

python学习十五天

内置函数二 1.lamda匿名函数 2. sorted() 3. filter() 4. map() 5. 递归函数 一. lamda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 def func(n): eturn n**n print(func(10)) f = lambda n: n**n print(f(10)) lambda表示的是匿匿名函数. 不需要用def来声明, 一句句话就可以声明出一个函数 语法: 函数名 = lambda 参数: 返回值 注意: 1.

Python学习第五天

复习内容: · 迭代器&生成器 · 装饰器 · Json & pickle 数据序列化 · 软件目录结构规范yi 一.生成器 1.   列表生成式: 2.   生成器的定义:在Python中一边循环一边计算的机制成为生成器(generator). 3.   创建生成器(generator)的方法: 1.把一个列表生成式的[]修改为()即创建了一个generator. 2.一个函数定义中包含yield关键字,则可以默认为是一个generator. 4.generator与函数的区别: gen

python 学习第五天,python模块

一,Python的模块导入 1,在写python的模块导入之前,先来讲一些Python中的概念性的问题 (1)模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质是.py结尾的python文件(文件名:test.py,对应的模块名:test) (2)包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py文件) 2,导入的方法 (1)import module_name导入某个模块 (2)import module_name,module2_