python之通过“反射”实现不同的url指向不同函数进行处理(反射应用一)

简介:

1、简单概括

下面定义了三个不同的模块用于测试,account.py 模块里有login()和logout(),admin.py模块里有index()。在这里模拟一个url的访问,意思是通过访问不同的url来指向到不同的模块里的函数进行处理,也可以说是处理这个url请求。那么这个就是通过“反射”机制来实现的。

拓展一下,现在几乎所有的语言(不管是php,python,java,.net)的web框架都是通过“反射”机制的方式来根据URL的不同来指向到不同函数里边的不同的方法来执行。


2、account.py 模块

1
2
3
4
5
6
7
8
9
10
11
12
# -*- coding: utf-8 -*-
"""
Created on Sun Nov 13 23:19:03 2016
 
@author: toby
"""
 
def  login():
     print  'login'
     
def  logout():
     print  'logout'

3、admin.py 模块

1
2
3
4
5
6
7
8
9
# -*- coding: utf-8 -*-
"""
Created on Sun Nov 13 23:19:23 2016
 
@author: toby
"""
 
def  index():
     print  '欢迎登录管理后台'

4、index-test.py 模块

1
2
3
4
5
6
7
8
9
10
11
12
13
# -*- coding: utf-8 -*-
"""
Created on Sun Nov 13 23:20:27 2016
 
@author: toby
"""
 
data  =  raw_input ( '请输入地址:' )
 
array  =  data.split( '/' )     #url规则,通过“/”来进行分割,分割后则索引0的值是模块,索引1的值是函数名
userspance  =  __import__ (array[ 0 ])     #这里导入模块,模块位于分割后的索引0位置
func  =  getattr (userspance,array[ 1 ])  #这里通过getattr来实现反射,索引1的位置为函数
func()     #执行反射后的函数


5、下面是测试结果

toby@toby-virtual-machine:~/workspace/pydev/main$ python index-test.py 
请输入地址:account/login
login
toby@toby-virtual-machine:~/workspace/pydev/main$ python index-test.py 
请输入地址:admin/index    #admin是模块,index是该模块里的一个函数 (这里模拟一个url,也可以想象成 http://192.168.1.100/admin/index)

欢迎登录管理后台    #这个输出就是index()函数里的一个动作
toby@toby-virtual-machine:~/workspace/pydev/main$ 



本文转自 TtrToby 51CTO博客,原文链接:http://blog.51cto.com/freshair/1872650


相关文章
|
1天前
|
测试技术 开发者 Python
Python检查函数和方法的输入/输出
【5月更文挑战第5天】Python检查函数和方法的输入/输出
9 1
|
2天前
|
Python
在Python中,利用`os模块`的`path.exists()`函数可判断文件是否存
【5月更文挑战第12天】在Python中,利用`os模块`的`path.exists()`函数可判断文件是否存在,该函数对路径进行检查,存在则返回True,不存在则返回False。示例代码展示了如何检查'example.txt'文件是否存在并相应打印消息。此外,`os.path.isfile()`用于确认路径是否为文件,仅当是文件时返回True,否则返回False,同样配以示例说明其用法。
12 2
|
3天前
|
Python
【Python操作基础】——函数
【Python操作基础】——函数
|
3天前
|
分布式计算 调度 异构计算
Python 数学应用(四)(4)
Python 数学应用(四)
10 4
|
3天前
|
消息中间件 Kafka Python
Python 数学应用(四)(3)
Python 数学应用(四)
21 5
|
3天前
|
存储 传感器 数据可视化
Python 数学应用(四)(2)
Python 数学应用(四)
5 0
Python 数学应用(四)(2)
|
3天前
|
存储 消息中间件 Kafka
Python 数学应用(四)(1)
Python 数学应用(四)
10 2
|
3天前
|
机器学习/深度学习 存储 算法
Python 数学应用(三)(4)
Python 数学应用(三)
10 2
|
3天前
|
存储 算法 决策智能
Python 数学应用(三)(3)
Python 数学应用(三)
9 2
Python 数学应用(三)(3)
|
3天前
|
存储 资源调度 算法
Python 数学应用(三)(2)
Python 数学应用(三)
9 1