给大家带来的一篇关于Python编程相关的电子书资源,介绍了关于Python、Python编程、Python导论方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小12.1M,约翰·谷泰格编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:9.7分
Python编程导论电子书封面
这本书就是我们期待已久的“计算思维”图书:不拘泥于技术细节,详尽展现了计算机科学的广度和乐趣。第二版收录了很多全新的材料,帮助读者聚焦计算,包括理解数据、完善传统计算问题的解决方案。
-Jeannette M.Wing,微软研究院副总裁,卡耐基梅隆大学计算机科学系顾问教授、前系主任
本书作者既是一位优秀的教师,也是杰出的作家。虽然你将通过本书学习Python,但这并不是“一本Python书”;虽然你也会学习编程,但这同样不是一本“编程书”,本书叙述严谨,可读性强,详细介绍了计算问题解决方法以及数据科学。第二版进行了扩展与重构,充分反映了python作为数据科学语言所扮演的重要角色。
-Ed Lazowska,比尔和梅琳达.盖茨基金会计算机科学与工程部门主席,华盛顿大学电子科研学院导师
用Python3讲授一门小型计算机科学课程时,我选择了这本书,看重的是书中关于计算机科学和编程更广阔视野和更多思路。
这本书非常棒,涵盖了计算机科学的众多基础领域。作者用Python讲解了计算相关知识,并且教你如何以计算机科学家的身份思考并解决问题。书中的示例也能让你切身实践习得的知识。
书是一名大四生翻译的,有些地方表达的不地道,姑且随手找出几处吐吐槽。
p1: [从内存的角度来说,一台普通的计算机可能有几百GB]
我从来没见过一台普通计算机的内存个能有几百GB,我猜测原文应该用的是memory,这里翻译成存储设备比较合适。
p3:[当一个整数整数存在整数立方根时]
给出的程序代码只能求解正整数的整数立方根,所以还是把文字说明改改吧。
p4:解释python2.7中的range函数和xrange函数区别那段,讲解的十分混乱,让人摸不到头脑,想来这应该是原文的问题。没想到美帝大学教授的表达能力也这么让人捉急。表达的时候切记不能跳跃,中间不能有重大步骤的遗漏,否则讲出来就让人摸不到头脑。
p36-37:help命令里面输出的是英文,代码里面却翻译成中文了,要么全翻译、要么全不翻译,不要只翻译了一半,容易让人看着不明就里。
整体来说这本书还算是不错的,但是要是能找到一个工作多年,富有经验的程序员来翻译就更好了。
一开始想着应该有400+页,结果不到300页。
python语言、一般的算法理论、一些数学问题的算法、软件测试、机器学习都有所涉及,但是书本身太薄,这样很多地方势必写得不清楚。
要举例子的话,我觉得类和面向对象编程说得太简略。
另外python现在应该普及3.x了,没必要再以2.x为主,兼顾3.x.
在这里还是要推荐下我自己建的Python开发学习群:483546416,群里都是学Python开发的,如果你正在学习Python ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2018最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴
掌握多种不同的思维方式是每个人大学时代的必修课。具备使用计算思维解决问题的能力是程序员入门的基本技能。本书基于作者开授的MIT热门MOOC教程编写,旨在培养读者的计算思维,为其日后的IT生涯打下坚实的编程基础。
本书基于MIT 编程思维培训讲义写成,主要目标在于帮助读者掌握并熟练使用各种计算技术,具备用计算思维解决现实问题的能力。书中以Python 3 为例,介绍了对中等规模程序的系统性组织、编写、调试,帮助读者深入理解计算复杂度,还讲解了有用的算法和问题简化技术,并探讨各类计算工具的使用。与本书* 1版相比,* 2版全面改写了后半部分,且书中所有示例代码都从Python 2 换成了Python 3。
本书适合对编程知之甚少但想要使用计算方法解决问题的读者。
John V. Guttag
1999年~2004年任MIT电气工程与计算机科学系主任,所授计算机科学系列导论课程深受学生欢迎。目前为计算机科学与人工智能实验室网络及移动系统组联合负责人,还进行软件工程、机器定理证明、硬件验证等领域的研究以及培训工作。获美国布朗大学英语专业学士学位、应用数学硕士学位,多伦多大学计算机科学博士学位。
Python编程在flask中模拟进行Restful的CRUD操作
这篇文章中我们将通过对HelloWorld的message进行操作,介绍一下如何使用flask进行Restful的CRUD。
概要信息
事前准备:flask
liumiaocn:flask liumiao$ which flask /usr/local/bin/flask liumiaocn:flask liumiao$ flask --version Flask 1.0.2 Python 2.7.10 (default, Jul 15 2017, 17:16:57) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] liumiaocn:flask liumiao$
代码示例:HTTP谓词(GET)
就像angular的插值表达式在模版中的作用一样,在flask中也可以一样使用,如果不熟悉angular的插值表达式的话也不要紧,看完下面的例子,基本上就会有一个大致的印象。
代码示例
liumiaocn:flask liumiao$ cat flask_4.py #!/usr/bin/python from flask import Flask from flask import render_template app = Flask(__name__) greeting_messages=["Hello World", "Hello Python"] @app.route("/api/messages",methods=['GET']) def get_messages(): return render_template("resttest.html",messages=greeting_messages) if __name__ == "__main__": app.debug=True app.run(host='0.0.0.0',port=7000) liumiaocn:flask liumiao$
模版文件
liumiaocn:flask liumiao$ cat templates/resttest.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hello Restful</title> </head> <body> {% for message in messages %} <h1>{{ message }}</h1> {% endfor %} </body> </html> liumiaocn:flask liumiao$
代码解析:app.route中指定了HTTP谓词GET,缺省GET可以省略,如果一个方法对应多个谓词动作,通过request.method来分离时,可以写成methods=[‘GET','POST']的形式
执行&确认
liumiaocn:flask liumiao$ ./flask_4.py * Serving Flask app "flask_4" (lazy loading) * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead. * Debug mode: on * Running on http://0.0.0.0:7000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: 131-533-062
页面确认
代码示例:HTTP谓词(DELETE|PUT|POST)
liumiaocn:flask liumiao$ cat flask_4.py #!/usr/bin/python from flask import Flask from flask import render_template from flask import request import json app = Flask(__name__) greeting_messages=["Hello World", "Hello Python"] #HTTP: GET: Retrieve operation @app.route("/api/messages",methods=['GET']) def get_messages(): return render_template("resttest.html",messages=greeting_messages) #HTTP: DELETE: Delete operation @app.route("/api/messages/<messageid>",methods=['DELETE']) def delete_message(messageid): global greeting_messages del greeting_messages[int(messageid)] return render_template("resttest.html",messages=greeting_messages) #HTTP: PUT: Update operation #HTTP: POST: Create operation @app.route("/api/messages/<messageid>",methods=['PUT','POST']) def update_message(messageid): global greeting_message msg_info=json.loads(request.get_data(True,True,False)) #msg_info=request.args.get('message_info') #msg_info=request.form.get('message_info','default value') #msg_info=request.values.get('message_info','hello...') greeting_messages.append("Hello " + msg_info["message_info"]) return render_template("resttest.html",messages=greeting_messages) if __name__ == "__main__": app.debug=True app.run(host='0.0.0.0',port=7000) liumiaocn:flask liumiao$
执行&结果确认
执行日志
liumiaocn:flask liumiao$ ./flask_4.py * Serving Flask app "flask_4" (lazy loading) * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead. * Debug mode: on * Running on http://0.0.0.0:7000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: 131-533-062
结果确认:Delete
liumiaocn:flask liumiao$ curl -X DELETE http://localhost:7000/api/messages/1 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hello Restful</title> </head> <body> <h1>Hello World</h1> </body> </html>liumiaocn:flask liumiao$
可以看到执行一次DELETE之后,两条消息现在只剩下一条消息了,接下来使用POST添加再添加一条
liumiaocn:flask liumiao$ curl -X POST -d '{"message_info":"LiuMiaoPost"}' http://localhost:7000/api/messages/3 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hello Restful</title> </head> <body> <h1>Hello World</h1> <h1>Hello LiuMiaoPost</h1> </body> </html>liumiaocn:flask liumiao$
再执行一次PUT操作
liumiaocn:flask liumiao$ curl -X PUT -d '{"message_info":"LiuMiaoPut"}' http://localhost:7000/api/messages/4 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hello Restful</title> </head> <body> <h1>Hello World</h1> <h1>Hello LiuMiaoPost</h1> <h1>Hello LiuMiaoPut</h1> </body> </html>liumiaocn:flask liumiao$
小结
这篇文章中,使用最简单的方式在flask中模拟了一下如何进行Restful的CRUD操作,当然,实际的做法有很多种,在接下来的文章中还会介绍另外一种非常常见的轮子flask-restful.
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对码农之家的支持。如果你想了解更多相关内容请查看下面相关链接
以上就是本次介绍的Python编程电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。
下一篇:PHP从入门到精通(第4版)
展开 +
收起 -
本文实例讲述了Python实现二叉树及遍历方法。分享给大家供大家参考,具体如下: 介绍: 树是数据结构中非常重要的一种,主要的用途是用来提高查找效率,对于要重复查找的情况效果更佳,如二叉排序树、FP-树。另外可以用来提高编码效率,如哈弗曼树。 代码: 用Python实现树的构造和几种遍历算法,虽然不难,不过还是把代码作了一下整理总结。实现功能: ① 树的构造 ② 递归实现先序遍历、中序遍历、后序遍历 ③ 堆栈实现先序遍历、中序遍历、后序遍历 ④ 队列实现层次遍历 #coding=utf-8class Node(object): """节点类""" def __init__(self, elem=-1, lchild=None, rchild=None): self.elem = elem self.lchild = lchild self.rchild ……
动态规划是一种非常高效的方法,适用于解决具有重复子问题和最优子结构的问题。 如果一个问题的全局最优解可以通过组合局部子问题的最优解求出,那么这个问题就具有最优子结构。我们已经见过一些这样的问题,比如归并排序。归并排序对一个列表进行排序的方式就是先对子列表进行排序,然后再合并子列表的排序结果。 如果求出一个问题的最优解时需要对同样的某个问题求解多次,那么这个问题就具有重叠子 问题。 0/1背包问题具有这两个特性,尽管不太明显。我们要先看一个更明显具有最优子结构和重叠子问题的问题。
python是一门tong通用性编程语言,几乎可以快速创建任何类型的程序,而不需直接访问计算机硬件。这次学习主要是将python作为一个工具,目的是xu学习思考和解决计算问题的相关概念。 首先xuex学习python的基本元素。 python程序处理的核心元素是对象。其有四类标量对象:(1)int(2)float(3)bool(4)None python的对象可以有一个或多个变量与之关联,也可以不关联任何名称。,对象和变量绑定出现时,变量仅是名称没有其他意义。 变量名可以包含大写字母、小写字母、数字(但不能以数字开头)和特殊字 符_。Python变量名是大小写敏感的,如Julie和julie就是不同的变量名。后,Python中还 有少量的保留字(有时称为关键字),它们有专门的意义,不能用作变量名。
书是一名大四生翻译的,有些地方表达的不地道,姑且随手找出几处吐吐槽。 p1: [从内存的角度来说,一台普通的计算机可能有几百GB] 我从来没见过一台普通计算机的内存个能有几百GB,我猜测原文应该用的是memory,这里翻译成存储设备比较合适。 p3:[当一个整数整数存在整数立方根时] 给出的程序代码只能求解正整数的整数立方根,所以还是把文字说明改改吧。 p4:解释python2.7中的range函数和xrange函数区别那段,讲解的十分混乱,让人摸不到头脑,想来这应该是原文的问题。没想到美帝大学教授的表达能力也这么让人捉急。表达的时候切记不能跳跃,中间不能有重大步骤的遗漏,否则讲出来就让人摸不到头脑。 p36-37:help命令里面输出的是英文,代码里面却翻译成中文了,要么全翻译、要么全不翻译,不要只翻译了一半,容易让人看着不明就里。 整体来说这本书还算是不错的,但是要是能找到一个工作多年,富有经验的程序员来翻译就更好了。
Copyright 2018-2021 www.xz577.com 码农之家
版权投诉 / 书籍推广 / 赞助:520161757@qq.com
Python编程中类与类的关系详解
类与类的关系 依赖关系 # 依赖关系: 将一个类的类名或者对象传给另一个类的方法中.class Elephant: def __init__(self, name): self.name = name def open(self,r1): # print(ref1) print(f'{self.name}默念三声: 芝麻开门') r1.open_door() def close(self): print('大象默念三声:芝麻关门')class Refrigerator: def __init__(self, name): self.name = name def open_door(self): print(f'{self.name}冰箱门被打开了....') def close_door(self): print('冰箱门被关上了....')e1=Elephant('大象')r1=Refrigerator('海尔冰箱') e1.open(r1) #将一个类的类名或者对象传给另一个类的方法中.产生了依赖关系 组合关系 组合: 将一个类的对象封装成另一个类的对象的属性. class Boy: def __init__(self, name): self.name = name ……