python函数

Web开发---路由实现

一曲冷凌霜 提交于 2020-03-24 23:01:35
类Flask框架实现 路由route 路由功能实现 路由类实现 #路由 # url = 'http://127.0.0.1:9999/python/index.html?id=5&name=wayne&age=20' # path = '/python/index.html' class Router: ROUTETABLE = {} def register(self,path,handler): self.ROUTETABLE[path] = handler def indexhandler(request): return '<h1>欢迎来到index.html</h1>' def pythonhandler(request): return "<h1>欢迎来到python.html</h1>" router = Router() router.register('/',indexhandler) router.register('/python',pythonhandler) 404处理 注册函数的改造 将注册函数改造成装饰器 class Router: ROUTETABLE = {} @classmethod #注册路由,装饰器 def register(cls,path): def wrapper(handler): cls.ROUTETABLE[path] =

hadoop学习笔记——用python写wordcount程序

大城市里の小女人 提交于 2020-03-24 22:42:15
尝试着用3台虚拟机搭建了伪分布式系统,完整的搭建步骤等熟悉了整个分布式框架之后再写,今天写一下用python写wordcount程序(MapReduce任务)的具体步骤。 MapReduce任务以来HDFS存储和Yarn资源调度,所以执行MapReduce之前要先启动HDFS和Yarn。我们都知道MapReduce分Map阶段和Reduce阶段,这就需要我们 自己写Map阶段的处理方法和Reduce阶段的处理方法。 MapReduce也支持除Java之外的其他语言,但要依赖流处理包(hadoop-streaming-2.7.4.jar),处理包不需要自己下载,hadoop本身带的就有,hadoop2.7的在 hadoop-2.7.4/share/hadoop/tools/lib 目录下,知道它所在的目录是因为只执行MapReduce命令的时候要指定hadoop-streaming-2.7.4.jar的位置。 接下来就是用python写Map的处理逻辑和Reduce的处理逻辑。wordcount是词频统计,要处理的原文本文件要上传到HDFS上,流程是原文本以流式方式传到Map函数,Map函数处理之后把结果传到Reduce函数,整个处理完后结果会保存在HDFS上,流式处理可以理解成文本一行一行的在原文件、Map函数、Reduce函数、结果文件之间流动处理。 原文本: hello

Python中Web框架编写学习心得

徘徊边缘 提交于 2020-03-24 22:21:15
学习廖雪峰老师的 Python实战教程 ,在Web框架这部分看了大致一个多礼拜,前面的知识学的不够扎实,由于比较复杂,因此在这里总结下,也算是巩固了。 先看下框架的调用代码: app = web.Application(loop=loop, middlewares=[logger_factory, response_factory]) init_jinja2(app, filters=dict(datetime=datetime_filter)) add_routes(app, 'handlers') add_static(app) 使用web.Application类创建aiohttp server——app,其中loop为Eventloop用来处理HTTP请求,middlewares为中间件,在这里用来记录日志并处理handler返回的数据为web.response对象,这里看下 response_factory 的代码 async def response_factory(app, handler): async def response(request): logging.info('Response handler...') #获取handler的返回值,根据返回值的不同类型进行处理 r = await handler(request) print(type(r)) if

【Python全栈-JavaScript】js Event()对象

﹥>﹥吖頭↗ 提交于 2020-03-24 21:48:36
JavaScript同步和异步+宏任务和微任务+事件 同步和异步 所有的点击事件都是异步的 注意:所有事件函数(addEventListener)都不能return /* * 同步和异步 * 同步,是指代码从上向下执行,执行完一条,才去执行下一条,是按照顺序按照步骤的执行 * * 异步,代码执行需要有一个过程,或者需要一定的时间,或者开始的时间不确定,这时候 * 我们先让别的不相关的代码执行,而当前代码当执行完成后去执行一个回调函数 * * * 注意:如果代码写在script中,并且写在函数外部,那么这个代码他只能执行一次,并且 * 是在开始时就同步执行了,显然这种方式不利于代码中出现交互,因此,代码就需要写在 * 函数中,减少代码之间同步执行方式。函数外通常仅用来定义变量(全局)和执行初始化函数 * * */ var sum=0; var bn=document.querySelector("button"); // 所有的事件都是异步 bn.addEventListener("click",clickHandler); function clickHandler(e) { sum++; oneFn(sum); //回调 // return sum; //注意:所有事件函数都不能return } function oneFn(sum) { console.log(sum,"1__

web框架

喜你入骨 提交于 2020-03-24 21:48:11
Web框架本质   众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。 #!/usr/bin/env python #coding:utf-8 import socket def handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\n") client.send("Hello, Seven") def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('localhost',8000)) sock.listen(5) while True: connection, address = sock.accept() handle_request(connection) connection.close() if __name__ == '__main__': main() 上述通过socket来实现了其本质,而对于真实开发中的python web程序来说,一般会分为两部分:服务器程序和应用程序。服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理。应用程序则负责具体的逻辑处理

python 有基础入门程序

天大地大妈咪最大 提交于 2020-03-24 21:36:06
用严格的缩进代替C++中的{},简洁美观。 变量不需要传统的定义,系统推断,类似auto 命名规则:大小写字母、数字、下划线和汉字等字符组合      注意事项:大小写敏感、首字符不能是数字、不与保留字相同 注释#注释一句,三引号注释多行,有意思的是三引号也是字符串 33个保留字:(大小写敏感)     and    elif     import     raise     global   as     else     in      return    nonlocal    assert    except is       try     True   break    finally   lambda    while    False    class     for     not       with      None   continue  from    or      yield   def     if     pass     del EX1: 请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬ 转换算法如下:(C表示摄氏度、F表示华氏度)

python编码问题(2)

谁都会走 提交于 2020-03-24 19:32:36
1 编码、解码   如同密码领域一样,从明文到密码是加密,从密码到明文是解密。在python中,(编码:unicode-->str;) 解码(str-->unicode). 既然是编码,那么就和密码领域一样,编码和解码自然涉及到编码/解码方案(对应加密或者解密算法),unicode相当于明文。在python中,编码函数是encode(),解码函数是decode()。需要注意的一点是,如果我们调用str.encode(),这里涉及到一个隐士的类型转化,会现将str转化成unicode,才能进行编码,这也是不太容易理解的地方。所以,str.encode()实际上就等价于str.decode(sys.defaultencoding).encode().而sys.defaultencoding一般是ascii,它是不能用来编码中文字符的。  字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。   decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码

Linux命令行与命令

天涯浪子 提交于 2020-03-24 19:24:34
---恢复内容开始--- Python的作者,Guido von Rossum,确实是荷兰人。1982年,Guido从阿姆斯特丹大学(University of Amsterdam)获得了数学和计算机硕士学位。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣。用他的话说,尽管拥有数学和计算机双料资质,他总趋向于做计算机相关的工作,并热衷于做任何和编程相关的活儿。 在那个时候,他接触并使用过诸如Pascal、C、 Fortran等语言。这些语言的基本设计原则是让机器能更快运行。在80年代,虽然IBM和苹果已经掀起了个人电脑浪潮,但这些个人电脑的配置很低 (在今天看来)。比如早期的Macintosh,只有8MHz的CPU主频和128KB的RAM,一个大的数组就能占满内存。所有的编译器的核心是做优化,以便让程序能够运行。为了增进效率,语言也迫使程序员像计算机一样思考,以便能写出更符合机器口味的程序。在那个时代,程序员恨不得用手榨取计算机每一寸的能力。有人甚至认为C语言的指针是在浪费内存。至于动态类型,内存自动管理,面向对象…… 别想了,那会让你的电脑陷入瘫痪。 然而,这种思考方式让Guido感到苦恼。Guido知道如何用C语言写出一个功能,但整个编写过程需要耗费大量的时间 (即使他已经准确的知道了如何实现)。他的另一个选择是shell。Bourne

python(七):元类与抽象基类

你。 提交于 2020-03-24 19:06:44
一、实例创建   在创建实例时,调用__new__方法和__init__方法,这两个方法在没有定义时,是自动调用了object来实现的。python3默认创建的类是继承了object。 class A(object): def __init__(self, *args, **kwargs): self.name, self.age, self.gender = args[:3] def __new__(cls, *args, **kwargs): print("__new__ has called.") return super(A, cls).__new__(cls) # 可写为 super().__new__(cls) 或 object.__new__(cls) a = A("Li", 27, "male") print(a.name, a.age, a.gender) """ __new__ has called. Li 27 male """ 二、类的创建   以class关键字开头的上下文在定义时就已经被解释执行。而函数(包括匿名函数)在没被调用时是不执行的。这个过程本质上做了一件事情:从元类type那里创建了一个名为A的类,开辟类内存空间,并读取class语句的上下文,将类属性和方法写进去。 print("--解释器开始执行--") def func(): print(

python简介、第一个python程序、变量、字符编码、用户交互程序、if...else、while、for

假如想象 提交于 2020-03-24 18:44:20
也愿大家永葆初心—— 已识乾坤大,犹怜草木青。 一、python简介 首先,我们普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编写一个文档等等,而计算机干活的CPU只认识机器指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可以执行的机器指令。而不同的编程语言,干同一个活,编写的代码量,差距也很大。 比如,完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。 二、第一个python程序 三、变量 变量只能使用字母、下划线、数字的组合,并且不能以数字开头。 常用的变量命名方法有: 下划线命名法:  gf_name = "xxx"    #python建议使用这种命名方法 驼峰命名法:   GFName = "xxx" 另外大写表示是常量,建议不要更改,如: PIF = 12345 python的保留字不能用于变量命名 ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is',