Python基础知识01-简介及入门代码
一.python简介与发展:
python 是一种面向对象的解释性计算机程序设计语言。由荷兰人Guido van Rossum(吉多·范罗苏姆) 于1989年发明。目前Python整体呈上升趋势,通过TIOBE统计图反映出Python应用越来越广泛并且也逐渐得到业内的认可!!
二.目前python的主要应用领域:
- 云计算:云计算最火的语言,如:openstack
- web开发:很多大型的网站均有python开发,如:Youtube,Dropbox,豆瓣等等,python的web框架:Django,flask
- 科学运算,人工智能:典型NumPy,SciPy, Matplotlib, Enthought librarys,pandas
- 运维:不会开发的运维,不是好运维,不会开发的运维,必将被淘汰
- 金融:量化交易,金融分析等等。。。
- 图形GUI:PyQT, WxPython,TkInter
三.python主要应用的公司:
Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。互联网公司广泛使用Python来做的事一般有:自动化运维、自动化测试、大数据分析、爬虫、Web 等。
注视:上述重点字体表示该公司主要使用Python语言开发
四.python的优缺点:
优点:
- Python的定位是“优雅”、“明确”、“简单”,"易学",“免费”,“简单”。
- 开发效率非常高,Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、 CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
- 高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
- 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
- 可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
- 可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
- Python确实是一种十分精彩又强大的语言。它合理地结合了高性能与使得编写程序简单有趣的特色。
- 规范的代码。Python采用强制缩进的方式使得代码具有极佳的可读性。
缺点:
- 速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的。
- 代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。
- 线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨。
五.python的种类:
- Cpython:python的官网版本,使用C语言实现,使用最为广泛,Cpython实现会将源文件(py文件)转换成字节码(pyc文件),然后运行在python虚拟机上。
- Jython:python的java实现,Jython会将python代码动态编译成Java字节码,然后在JVM上运行。
- IronPython:python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
- PyPy(特殊): Python实现的Python,将Python的字节码字节码再编译成机器码
- RubyPython、Brython ...
六.python与其他语言对比:
python与C对比:
- python易学,易用,易懂。并且是一种脚本语言;python的类库齐全并且简单。
- C语言:代码编译得到机器码,机器码在处理器上直接执行,每一条指令控制CPU工作,与底层硬件打交道
- Python 和 C Python这门语言是由C开发而来
- 对于使用:由于Python的类库齐全并且简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
- 对于速度:Python的运行速度相较与C,很慢。
Python 和 C#对比:
- python可以跨平台,可运行在linux、windows,osx等平台。
- python开源,c#则相反
- 对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持
- 对于速度:Python是解释性语言,C#需要编译,所以python运行要慢点
python与java对比:
- 开源方向来说,Python更有优势,Java(虽然最近Java已经开源了,但有一些开源协议上面的版权受限);
- 对于使用:Python更简洁,Java过于庞大复杂(如Web服务器)
- 对于速度:Python是解释性语言,java需要编译,所以python运行要慢点
python与php对比:
- Python的OO更加完善
- Python可以开发桌面应用程序
python与ruby perl对比:
- 与ruby不同,OOP对于Python是可选的,所以Python不会强制用户选择OOP开发
七:python安装:
windows环境:
1、下载安装包 https://www.python.org/downloads/ 2、安装 默认安装路径:C:\python27 3、配置环境变量 【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】 如:原来的值;C:\python27,切记前面有分号
linux环境:
linux中自带python环境,如果想安装自己想要的版本(原本是2.6升级为2.7的版本),如下:
查看默认Python版本 python -V 1、安装gcc,用于编译Python源码 yum install gcc 2、下载源码包,https://www.python.org/ftp/python/ 3、解压并进入源码文件 4、编译安装 ./configure make all make install 5、查看版本 /usr/local/bin/python2.7 -V 6、修改默认Python版本 mv /usr/bin/python /usr/bin/python2.6 ln -s /usr/local/bin/python2.7 /usr/bin/python 7、防止yum执行异常,修改yum使用的Python版本 vi /usr/bin/yum 将头部 #!/usr/bin/python 修改为 #!/usr/bin/python2.6
python入门
1、第一句python代码
python内部执行过程如下:
2、内容编码
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。
显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:
报错:ascii码无法表示中文
#!/usr/bin/env python print "你好,世界"
改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:
#!/usr/bin/env python # -*- coding: utf-8 -*- print "你好,世界"
3、注释
当行注视:# 被注释内容
多行注释:""" 被注释内容 """
4、pyc文件
执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。
ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。
5、执行脚本传入参数
Python有大量的模块,从而使得开发Python程序非常简洁。类库有包括三中:
- Python内部提供的模块
- 业内开源模块
- 程序员自己开发的模块
Python内部提供一个 sys 的模块,其中的 sys.argv 用来捕获执行执行python脚本时传入的参数
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys print sys.argv