Python是一门简单易学的编程语言,代码简洁优美,最近,随着人工智能技术兴起,python也跟着火起来了。那么如何使用python呢?一起来了解下吧:
如何使用python
[图片0]
在C调用Python模块时需要初始化Python解释器,导入模块等,但Python调用C模块却比较简单,下面还是以 和 做一说明:
(1)编写C代码,代码很简单,只是输出“hello,world”:
#include<>
int test()
{
printf("hello,world");
}
(2)将编写的C代码编译成动态链接库的形式,具体命令:
gcc -fPIC -shared -o
其中-shared代表这是动态库,-fPIC使得位置独立(如果程序本来就是独立的话会有警告,无视即可),-o指定了输出文件,改成dll后缀一样可以用。
此时在当前目录下就生成了 的动态链接库:
(3)在中导入动态链接库,并调用C函数
这里的ctypes是Python的一个外部库,提供和C语言兼容的数据类型,以方便的调用C编译的静态库和动态库中的函数, 在此可以很肯定的说,ctypes中可定对C的数据类型进行了转换,使用时只需import ctypes ,然后导入动态库即可。
ctypes详细介绍/bangong/2016/08-08/.html
import ctypes
lib = ('./')
()
(4)在终端下输入Python , 运行结果:
打印出中的内容, 说明Python调用C模块成功!
运行过程中出现了OSError: [WinError 193] %1 不是有效的 Win32 应用程序。然后重新安装Python(32位),之前是64位,然后问题就解决了
如何用Python建网站
Python主流的应用包括:Web开发、图形界面开发、系统网络运维、网络编程、科学数字计算、3D游戏开发,而目前用的最多的就是Web开发和数据科学计算。
大家所熟知的Anaconda,就主要集成了这两方面的包,供用户使用,十分方便。
题主想要用python搭建网站,就必须学会相应的Web开发框架,现在比较热门的web框架是Flask和Django,随之而来的就是HTML、Javascript、CSS以及数据库的技术,结合起来,才能开发出一个网站。
我用Flask开发过一个数据分析平台,那就从Flask开始介绍。
1. Flask
Flask 很轻,本身就是用Python语言编写的,兼容性很高,它采用Werkzeug Jinja2模板,再加上一系列的extension功能 ,花很少的成本就能够开发一个简单的网站,非常适合初学者学习。
如上,就是一个简单的“hello word”页面的实现。
如果你是一个小团队,开发网站的复杂性不高,便推荐采用Flask开发,如果网站功能很复杂,则推荐下面这个商业上应用很广的框架,Django
2. Django
Django是一个全能型框架,也是Python Web开发使用最多的框架,最有学习的价值,如果初学者接触,一定要沉得住气,才能真正学好。
Django基于MVC构造,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。
如果你使用的IED是pycharm,那么可以直接右键新建Django项目
你还看到了flask、pyramid、Web2py等类型的项目,其中,Django排在最前面,我觉得也说明了它的重要性和常用性。
然后再看官方文档,结合一些视频课程一起学习,学习资源还是挺丰富的。
3. Tornado
Tornado是一个性能很高的框架。Tornado 是一个很好的框架,支持异步处理的功能,这是它的特点,其他框架不支持。
所以,它是非阻塞式服务器,而且速度相当快。下面就是一个经典的hello word 示例。
另外一点是,Tornado 的设计似乎更注重 RESTful URL。但 Tornado 提供了网站基本需要使用的模块外,剩下的则需要开发者自己进行扩展,所以,用tornado的一个很明显的好处是,有些轮子自己造才能学到东西。
知乎就是基础 Tornado 开发的。
另一个好处是因为是facebook开源的,加上自身优秀的代码质量和傲娇的效率表现,目前非常火,诞生了一大批的优秀产品,除了知乎外, quora,INK361 ,42区 . 遇见也是Tornado开发的。
4. Bottle
Bottle 和 Flask 都属于轻量级,是一个非常精致的WSGI框架。Bottle适用于小型的Web开发,在应用程序规模比较小的情况下可以实现快速开发。但是由于自身功能所限,对于大型的Web程序,Bottle的功能略显不足。
上面是一个简单的示例。
5. web2py
web2py是我学习Python的时候,接触的第一个web框架,当时觉得很神奇,它直接提供了一个管理页面,供administrator操作,创建账户和密码都不是难事,简单,小巧,灵活。
但或许你也已经听说过了,这个框架是基于开发的,但维护和更新没有跟上,不然那还有flask什么事啊!
web2py是Google 在 的基础上二次开发而来的,兼容 GAE(Google App Engine),性能很高。
6. Quixote
著名的 豆瓣 就是基于 Quixote 开发的,跟上面几个框架不同,Quixote 的路由会有些特别。另外 Quixote 的性能据说也好。
如何学习Python
Python上手很容易, 基本有其他语言编程经验的人可以在1周内学会Python最基本的内容.
它们包括:
1.常用内置类型(int, float, bool, bytes, str, list, dict, set)的使用.
2.分支if-else 循环while 迭代for的语法.
定义函数, 调用函数.
你再花1周学习些:
1.类
2.异常
此时, 有些人就在简历中得意的自称"会"Python了.
但是学到如此程度, 在实际编程中会经常遇到挫折, 主要源自理解不够深入, 仅仅Python语法和API层面体验了一下.
随意列举一些新手普遍存在的问题:
[图片1]
1.不了解Python对象模型, 变量名, 对象概念含混.
2.不了解可变对象和不可变对象, 尤其是int.
3.不了解切片意味着拷贝, 在循环中大量使用, 影响效率.
4.不了解切片是浅拷贝还是深拷贝.
5.遇到bytes和str(中的str和unicode)就头晕.
6.经常在需要使用is的场景使用==.
7.不了解def是运行时执行语句, 并且是赋值语句.
8.类属性和实例属性混淆.
9.不了解在函数中修改可变对象参数会对调用者产生影响, 导致莫名其妙错误.
10.企图在函数中修改全局变量, 没有使用global, 而创建了本地变量.
11.以可变对象做函数默认参数.
拥有某项技能的程序员的价值, 可以用学习技能所需的成本来衡量.你用2周学习达到的这种程度, 对于企业就是没有价值的, 因为老板可以让一个公司里任意其他语言的程序员经过2-3周的学习就能达到你现在的程度.Python的简洁易用, 快速开发对项目有价值, 但这不是你的价值, 是Python的价值.所以提高自身价值, 也就是不让别人轻易追上你. 以极低的成本替代你.
你只能快跑, 进一步学习, Python语言层面还需要学习下面一些内容:
1.使用生成器, 迭代器
2.函数式编程, 匿名函数lambda, map, reduce, filter
3.列表解析, 字典解析, 集合解析, 生成器解析
4.运算符重载(__setattr__, __getattr__, __getitem__, __gt__, __lt__...)
, 描述符(__get__, __set__, __delete__)
6.上下文管理器(__enter__, __exit__)
7.深入理解面向对象
上述都是语言层面的,属于内功.实战中当然也需要一些更为具体的外功, 训练外功可以从熟悉Python标准库开始, 这些模块能进入标准库说明他们足够好并且在实际项目中足够常用, 列举一些极为常用的:
1.正则表达式 re
2.迭代工具 itertools
3.常用数据结构 collections, heapq, array
4.处理二进制数据 struct
5.随机 random
6.系统调用 os
对象序列化 pickle
8.多进程多线程处理 threading, multiprocessing
9.网络 socket, urllib
10.系统参数 sys
无论练习内功或外功,结合实战都是最好的训练方式和检验手段, 可以根据个人情况以及喜好选择, 如:
1.使用django, flask开发网站.
2.开发网络爬虫或使用Python爬虫框架(如scrapy).
3.写一些自动化运维脚本, 定时读取某软件log, 出现异常自动发邮件.
4.使用selenium对网站进行测试.
5.使用Python开发树莓派小车(电机,传感器驱动).
6.使用Python开发Vim插件, 如在vim中做一个音乐播放器.
7.使用Python做算法题, 如leetcode.
做图像识别.
9.使用numpy和pandas做数据处理.
10.使用机器学习库sklearn, tensorflow做应用.
11.使用PyQt编写桌面应用.
12.使用scipy, matplotlib做科学计算.
13.使用Python做渗透测试.
......
个人建议选择小项目进行实训, 有些新手上来就想定一个大目标, 做的时候很挫折, 往往半途而废.把小东西先实现, 然后优化. 接下来添加新功能, 慢慢迭代把小东西做大. 这样在做的时候,每实现一个小功能你都会有成就感, 激励继续前进.
可能经过比较漫长的一段时间, 你成为了一个熟练的Python应用程序员, 还有些高级话题可以继续学习:
1.装饰器
2.元类
这些高级话题在开发框架中经常使用, 它们可以帮你创建更灵活的代码.
通常自称一个月光速学了会Python的人基本都不是天才, 只是浮躁, 目标定的比较低而已.
不要太过急功近利, 慢慢玩, 精进.
如果你觉着编程有趣, 成长也就不再痛苦, 祝学习愉快.
如何在Web开发中使用Python
底层视角
当一个用户访问网站时,他们的浏览器会与网站的服务器进行连接(这称为请求)。服务器在文件系统中寻找文件,并将其发送回用户的浏览器(这称为响应)。这就是底层HTTP协议的大致工作原理。动态网站不是基于文件系统中的文件,而是以程序为基础。当请求到来,运行在服务器上的程序就会生成相应内容并发送回用户。它们可以处理用户的各种数据,例如列出公告板上的帖子,显示你的邮件,配置软件,或者只是显示当前时间。这些程序能用服务器支持的任意语言完成。自从大部分的服务器开始支持Python,用Python创建动态网站就变得十分简单了。
大多数的HTTP服务器是用C或者C++写的,它们不能直接执行Python代码,所以服务器和程序之间就需要有一座桥。网桥,或者更确切地称为接口,决定了程序如何与服务器进行交互。
为了创建尽可能好的接口,人们作出了无数尝试,但只有少数的几个值得关注。
不是每一个服务器都支持所有的接口。许多服务器只支持老的,现在已经过时的接口。然而,它们经常可以通过第三方模块扩展来支持新的接口。
常用网关接口
这个接口,通常被称为“CGI”,是最古老的,几乎被所有web服务器很好地支持着。在处理单个请求时,程序由服务器启动,通过CGI与服务器进行通讯。因而每个请求来临时都要花一定时间去启动新的Python解释器。这就使得整个接口在低负载状态的时候才能正常使用。
CGI的优点在于它很简单——用CGI写一个Python程序大概就是三行代码的事情。这种简易性造成了一种误解:它对开发者的帮助聊胜于无。
虽然还有可能用CGI写程序,但已经不建议这么做了。通过使用本文稍后提到的WSGI,就能模仿CGI的方式写程序,而且在迫不得已的时候,它们也能作为CGI运行。
参见:Python标准库包含了一些模块来帮助创建简单的CGI程序:
cgi — 在CGI脚本中处理用户输入
cgitb — 当在CGI应用中出现错误时,不再显示“500服务器内部错误”的消息,而用更好的错误回溯代替。
Python的wiki有专门描述CGI脚本的页面,里面有关于CGI在Python中的一些额外信息。