一、Python概要
1.1、语言简介
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,具有20多年的发展历史,成熟且稳定。
用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编写一个文档等等,而计算机干活的CPU只认识机器指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可以执行的机器指令。而不同的编程语言,干同一个活,编写的代码量,差距也很大。
比如,完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。
所以Python是一种相当高级的语言。
Python(英国发音:/ˈpaɪθən/美国发音:/ˈpaɪθɑːn/),是一种面向对象的解释型计算机程序设计语言,由荷兰人GuidovanRossum于1989年发明,第一个公开发行版发行于1991年。
Python是纯粹的*软件,源代码和解释器CPython遵循GPL(GNUGeneralPublicLicense)协议。Python语法简洁清晰,特色之一是强制用空白符(whitespace)作为语句缩进。
Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。
1.2、语言特点
简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。
易学:Python极其容易上手,因为Python有极其简单的。
免费、开源。
高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
可移植性:由于它的开源本质,Python已经被移植在几乎所有平台上(经过改动使它能够工作在不同平台上)。
解释性:Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。
面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。
可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。(胶水语言)
可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。
丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。Python标准库命名接口清晰、文档良好,很容易学习和使用。
Python标准库的主要功能有:
- 文本处理,包含文本格式化、正则表达式匹配、文本差异计算与合并、Unicode支持,二进制数据处理等功能
- 文件处理,包含文件操作、创建临时文件、文件压缩与归档、操作配置文件等功能
- 操作系统功能,包含线程与进程支持、IO复用、日期与时间处理、调用系统函数、写日记(logging)等功能
- 网络通信,包含网络套接字,SSL加密通信、异步网络通信等功能
- 网络协议,支持HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多种网络协议,并提供了编写网络服务器的框架
- W3C格式支持,包含HTML,SGML,XML的处理。
- 其它功能,包括国际化支持、数学运算、HASH、Tkinter等
开发效率高:丰富的库,据说豆瓣开发只用了3个月时间就上线了。
1.3、发展历史与版本
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间在阿姆斯特丹为了打发无聊的圣诞节而编写的一个脚本解释编程语言。之所以选中Python作为编程的名字,是因为他是一个蒙提·派森的飞行马戏团的爱好者。
创始人为吉多·范罗苏姆(Guido van Rossum)
Python 2.0于2000年10月16日发布,主要是实现了完整的垃圾回收,并且支持Unicode。
Python 3.0于2008年12月3日发布,此版不完全兼容之前的Python源代码。
1.4、功能与前景
1.4.1、应用领域
(1).常规软件开发
Python支持函数式编程和OOP面向对象编程,能够承担任何种类软件的开发工作,因此常规的软件开发、脚本编写、网络编程等都属于标配能力。
桌面软件:PyQt、PySide、wxPython、PyGTK是Python快速开发桌面应用程序的利器。
(2).科学计算
随着NumPy,SciPy,Matplotlib,Enthoughtlibrarys等众多程序库的开发,Python越来越适合于做科学计算、绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python是一门通用的程序设计语言,比Matlab所采用的脚本语言的应用范围更广泛,有更多的程序库的支持。虽然Matlab中的许多高级功能和toolbox目前还是无法替代的,不过在日常的科研开发之中仍然有很多的工作是可以用Python代劳的。
Python是一门很适合做科学计算的编程语言,97年开始,NASA就大量使用Python进行各种复杂的科学运算,随着NumPy、SciPy、Matplotlib、Enthought librarys等众多程序库的开发,使得Python越来越适合做科学计算、绘制高质量的2D和3D图像。
(3).自动化运维、操作系统管理
这几乎是Python应用的自留地,作为运维工程师首选的编程语言,Python在自动化运维方面已经深入人心,比如Saltstack和Ansible都是大名鼎鼎的自动化平台。
在很多操作系统里,Python是标准的系统组件。大多数Linux发行版以及NetBSD、OpenBSD和MacOSX都集成了Python,可以在终端下直接运行Python。有一些Linux发行版的安装器使用Python语言编写,比如Ubuntu的Ubiquity安装器,RedHatLinux和Fedora的Anaconda安装器。GentooLinux使用Python来编写它的Portage包管理系统。Python标准库包含了多个调用操作系统功能的库。通过pywin32这个第三方软件包,Python能够访问Windows的COM服务及其它WindowsAPI。使用IronPython,Python程序能够直接调用.NetFramework。一般说来,Python编写的系统管理脚本在可读性、性能、代码重用度、扩展性几方面都优于普通的shell脚本。
(4).云计算
开源云计算解决方案OpenStack就是基于Python开发的,搞云计算的同学都懂的
(5).WEB开发
基于Python的Web开发框架不要太多,比如耳熟能详的Django,还有Tornado,Flask。其中的Python+Django架构,应用范围非常广,开发速度非常快,学习门槛也很低,能够帮助你快速的搭建起可用的WEB服务。
Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。Python定义了WSGI标准应用接口来协调Http服务器与基于Python的Web程序之间的通信。一些Web框架,如Django,TurboGears,web2py,Zope等,可以让程序员轻松地开发和管理复杂的Web程序。
(6).网络爬虫、服务器软件
也称网络蜘蛛,是大数据行业获取数据的核心工具。没有网络爬虫自动地、不分昼夜地、高智能地在互联网上爬取免费的数据,那些大数据相关的公司恐怕要少四分之三。能够编写网络爬虫的编程语言有不少,但Python绝对是其中的主流之一,其Scripy爬虫框架应用非常广泛。
Python对于各种网络协议的支持很完善,因此经常被用于编写服务器软件、网络爬虫。第三方库Twisted支持异步网络编程和多数标准的网络协议(包含客户端和服务器),并且提供了多种工具,被广泛用于编写高性能的服务器软件。
(7).数据分析
在大量数据的基础上,结合科学计算、机器学习等技术,对数据进行清洗、去重、规格化和针对性的分析是大数据行业的基石。Python是数据分析的主流语言之一。
(8).人工智能
Python在人工智能大范畴领域内的机器学习、神经网络、深度学习等方面都是主流的编程语言,得到广泛的支持和应用。
(9).游戏
很多游戏使用C++编写图形显示等高性能模块,而使用Python或者Lua编写游戏的逻辑、服务器。相较于Python,Lua的功能更简单、体积更小;而Python则支持更多的特性和数据类型。
近些年,编程语言Python的热度越来越高,因为Python简单,学起来快,是不少程序员入门的首选语言。
在网络游戏开发中,Python也有很多应用,相比于Lua or C++,Python比Lua有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑,Python非常适合编写1万行以上的项目,而且能够很好的把网游项目的规模控制在10万行代码以内。
(10).金融分析与交易
金融分析包含金融知识和Python相关模块的学习,学习内容囊括Numpy\Pandas\Scipy数据分析模块等,以及常见金融分析策略如“双均线”、“周规则交易”、“羊驼策略”、“Dual Thrust 交易策略”等。
量化交易,就是以数学模型替代人的主观判断来制定交易策略。通常会借助计算机程序来进行策略的计算和验证,最终也常直接用程序根据策略设定的规则自动进行交易。
Python 由于开发方便,工具库丰富,尤其科学计算方面的支持很强大,所以目前在量化领域的使用很广泛。市面上也出现了很多支持 Python 语言的量化平台。通过这些平台,你可以很方便地实现自己的交易策略,进行验证,甚至对接交易系统(由于政策原因,现在很多交易接口暂停开放)。
Python 量化平台:
目前国内比较知名的几个平台:
优矿 uqer.io聚宽 joinquant.com米筐 ricequant.com
国外知名平台:
它们都可以使用 Python 进行策略开发。以优矿为例,注册之后,在“开始研究”页面,新建一个 Notebook,就可以开始用 Python 写你自己的策略。
https://www.cnblogs.com/dhcn/p/7121435.html
示例:
#! 简单的交易策略:每天买入一手股票池里的所有股票。 start = '2018-01-01' # 回测起始时间 end = '2019-01-01' # 回测结束时间 benchmark = 'HS300' # 策略参考标准 universe = ['000001.XSHE', '600000.XSHG'] # 证券池,支持股票和基金 capital_base = 100000 # 起始资金 freq = 'd' # 策略类型,'d'表示使用日线回测 refresh_rate = 1 # 调仓频率,表示执行handle_data的时间间隔,由于freq = 'd',时间间隔的单位为交易日 def initialize(account): # 初始化虚拟账户状态 pass def handle_data(account): # 每个交易日的买入卖出指令 for stock in account.universe: order(stock,100)
结果:
Python的就业方向
- 发展前景一:Linux运维
- 发展前景二:Python Web网站工程师
- 发展前景三:Python自动化测试
- 发展前景四:数据分析
- 发展前景五:人工智能
1.4.2、发展前景
在过去的十年里,Python语言获得了最大的增长幅度——十年语言之冠。
语言当前排行:
排行发展:
国外谁在使用python
Python Google的三大编程语言之一
在Google,C++、Java、Python是使用率排名前三的编程语言,使用Python的开发团队也是Google的第三大研发部门。
在Google内部的很多项目,例如Google Engine使用C++编写性能要求极高的部分,然后用Python或Java/Go调用相应的模块。
YouTube主要是Python写的
国内谁在使用python
腾讯游戏运营支撑体系的开发团队,在使用django/celery/rabitmq/mongodb开发了一个已广泛使用的内部开放平台。
豆瓣最初使用Python开发,只是用了3个月。
1.5、资源
资料:
wiki:http://zh.wikipedia.org/zh/Python
Chinaunix的Python论坛资料
《OReilly-Learning-Python-4th-Edition-Oct-2009》
《简明 Python 教程》(中文),对应的英文版是《A Byte of Python》
深入 Python 3,http://goo.gl/cyrUY
工具:
UliPad 代码编辑工具(本身由python编写)
Pydev:eclipse + pydev插件
Eric:基于PyQt的*软件,功能强大。
二、搭建Python开发环境
2.1.下载安装包
1)上python官网下载python运行环境(https://www.python.org/downloads/),建议下载稳定版本,不推荐使用最新版本
2)上pycharm官网下载最新版的IDE(http://www.jetbrains.com/pycharm/download/#section=windows),官网提供了mac、windows和linux三种版本
Python IDE
优秀的Python IDE有很多,这里介绍几款:
3)上postgresql官司网下载最新版的数据库(https://www.postgresql.org/download/windows/ 打开页面后,点击Download the installer进入下载页,然后选择版本和操作系统,再点击下载)
2.2.安装python运行环境
1)安装python运行环境
双击python-3.5.2.exe
一般采用自定义安装比较好,不然自动安装会把环境安装到个人目录里,有时要找起来很麻烦
另外第二个红框前面的勾记录打上,不然需要手动在windows环境变量的路径中添加python安装路径
这里将安装路径手动修改一下,可以安装到C盘也可以安装到D盘
完成安装
然后我们打开CMD,在里面输入python,就可以直接进入进行编码了
我们可以输入print('hello world!')来测试一下python运行,如下图
如果输入python出现下面错误
那就得手动将python安装路径添加到系统环境变量中
打开开始菜单,对计算机点右键=》属性
选中后点击编辑,在最后面分别添加
;C:\Python\Scripts\;C:\Python\;
这是刚才的安装路径
然后打开新的CMD(要开新的cmd才有效),输入python就可以看到刚才的提示进入编码界面了
2.3、安装pycharm IDE软件
双击pycharm安装包,一般按正常的默认安装项就可以了
这里是选择IDE编辑界面皮肤的,一般来说使用黑底灰字看起来没那么刺眼,对眼好一点,这里选择以后还可以在里面设置。
提交后安装成功。
汉化方法,不建议汉化
到网上下载个汉化包改名为resources_cn.jar,然后直接复制到安装路径下的lib文件夹里,重新打开IDE就自动汉化了
想要取消汉化,只需要将这个文件删除,重新打开IDE就自动恢复英文版本
建议不要进行汉化,因为汉化后IDE有一些功能使用不了或点击不了
要配置编辑界面皮肤,可按下面进行配置。一般字体按默认项会比较小,也可以按下面的配置修改大一些。
这里的列表项选择可以使用不同的皮肤
使用默认项时,字体大小无法直接进行修改,点击Save As... 另存为后就可以修改
另存为后现在就可以直接修改了
3)安装postgresql数据库
双击安装文件,然后按默认项安装就可以了
最后一步这个勾最好去掉,不然会弹出安装各种插件的窗口,一般来说那些插件我们暂时都用不上,不用进行安装
2.4、安装python包
安装包有两种方法,一种是使用命令行,一种是IDE选择安装
1)命令行安装方式
打开cmd,输入pip install flask (你要安装的包名称),按回车就开始进入安装了
等一会就安装成功了
一般我们需要将pip升级到最新版本,这样可以减少安装问题的出现
在cmd中输入下面命令,就会启动pip升级
1
|
pip install https:
/
/
pypi.python.org
/
packages
/
11
/
b6
/
abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447
/
pip
-
9.0
.
1.tar
.gz
#md5=35f01da33009719497f01a4ba69d63c9
|
我们在cmd中输入:pip --version 就可以看到当前的pip版本了
万一pip升级失败,也不用怕,可以到python官网进行下载安装包进行安装升级
在浏览器地址栏中输入:https://pypi.python.org/pypi/pip
下载安装包,并解压到C盘根目录
在DOS下输入下图命令,进入pip-9.0.1文件夹,然后输入:python setup.py install 进入pip安装
完成pip升级操作
2)IDE安装方式
打开IDE,点击:File => Default Settings
然后选择Project Interpreter,就可以看到已经安装好的python包列表了,点击右上角的+进入安装包选择界面
在顶部搜索框里输入想要安装的包名称,就可以搜索到安装包,然后选择它,点击左下角的Install Package,IDE就开始进入下载安装了,如果出现由于网络原因造成安装失败,可以点击其他项后再点回来,然后点安装,多次后就可以安装成功,反复进行后还是无法安装成功的,可以点击查看出错原因,也可以使用命令方式进行,直接看到出错原因。
完成以上操作后,就可以开始开发pythont程序了
2.5、绿化IDE
商业应用建议大家购买版权,学习使用可以绿化。
地址:https://gitee.com/pengzhile/jetbrains-agent
使用方法:
0. 先下载压缩包解压后得到jetbrains-agent.jar,把它放到你认为合适的文件夹内。
如果你没有gitee账号,你也可以在这里下载:
下载页面:https://zhile.io/2018/08/17/jetbrains-license-server-crack.html
1. 点击你要注册的IDE菜单:"Configure|Help" -> "Edit Custom VM Options ..."
如果提示是否要创建文件,请点"是|Yes"。
参考文章:https://intellij-support.jetbrains.com/hc/en-us/articles/206544869
2. 在打开的vmoptions编辑窗口末行添加:"-javaagent:/absolute/path/to/jetbrains-agent.jar"
一定要自己确认好路径,填错会导致IDE打不开!!!最好使用绝对路径。
如: -javaagent:/Users/neo/jetbrains-agent.jar
如果还是填错了,参考这篇文章编辑vmoptions补救:
https://intellij-support.jetbrains.com/hc/en-us/articles/206544519
3. 重启你的IDE。
4. 注册选择License server方式,地址填入:http://jetbrains-license-server (应该会自动填上)
或者点击按钮:"Discover Server"来自动填充地址
5. 如果提示错误:
"Error opening zip file or JAR manifest missing : jetbrains-agent.jar"
这种情况请试着填上jar文件的绝对路径.
** 如果你想要离线激活,请使用:ACTIVATION_CODE.txt 内的注册码激活(需按上述步骤配置javaagent)。
如果你需要自定义License name,请加群告知。
** 未注册IDE找不到Help菜单可选择“试用(Evaluate for free)”后打开主界面。
本项目在最新2018.3.5上测试通过(请注意阅读本文件9行)。
理论上适用于目前Jetbrains全系列所有新老版本。
IDE升级会从旧版本导入以上设置,导入配置后可能提示未注册(因为刚导入的vmoptions未生效),直接重启IDE即可,无需其他操作。
三、第一个Python程序
3.1、Python交互模式
在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>。
在Python交互模式下输入exit()并回车,就退出了Python交互模式,并回到命令行模式:
在交互模式的提示符>>>下,直接输入代码,按回车,就可以立刻得到代码执行结果。现在,试试输入1000+2000,看看计算结果是不是3000:
在Python交互式模式下,可以直接输入代码,然后执行,并立刻得到结果。
3.2、使用记事本完成
在Python的交互式命令行写程序,好处是一下就能得到结果,坏处是没法保存,下次还想运行的时候,还得再敲一遍。
在一个没有中文的目录下创建一个名称为Hello.py的文件,使用记事本打开,编写如下代码:
#! Hello World! print ("Hello world!");
在命令行编译运行:
3.3、使用IDE开发工具PyCharm
启动PyCharm
启动成功后选择File菜单下的New Project项
设置项目名称与路径
新建一个python文件
输入文件名称,编写源程序
编译并运行,选择Run菜单下的run运行
基本输入与输出:
name=input("请输入名称:"); print("Hello Python!"+name); print("1+1=",1+1);