01.万恶之源-python基础

⼀一.python介绍
python的创始⼈人为吉多·范罗苏姆(Guido van Rossum)。1989年年的圣诞节期间,吉多·
范罗苏姆为了了在阿姆斯特丹丹打发时间,决⼼心开发⼀一个新的脚本解释程序,作为ABC语⾔言的⼀一
种继承。
最新的TIOBE排⾏行行榜,Python已经占据世界第四名的位置, Python崇尚优美、清晰、简
单,是⼀一个优秀并⼴广泛使⽤用的语⾔言。
由上图可⻅见,Python整体呈上升趋势,反映出Python应⽤用越来越⼴广泛并且也逐渐得到业内
的认可!!!
Python可以应⽤用于众多领域,如:数据分析、组件集成、⽹网络服务、图像处理理、数值计算
和科学计算等众多领域。⽬目前业内⼏几乎所有⼤大中型互联⽹网企业都在使⽤用Python,如:
Youtube、Dropbox、BT、Quora(中国知乎)、⾖豆瓣、知乎、Google、Yahoo!、
Facebook、NASA、百度、腾讯、汽⻋车之家、美团等。
⽬目前Python主要应⽤用领域:
云计算: 云计算最⽕火的语⾔言, 典型应⽤用OpenStack
WEB开发: 众多优秀的WEB框架,众多⼤大型⽹网站均为Python开发,Youtube,
Dropbox, ⾖豆瓣。。。, 典型WEB框架有Django
科学运算、⼈人⼯工智能: 典型库NumPy, SciPy, Matplotlib, Enthought
librarys,pandas
系统运维: 运维⼈人员必备语⾔言
⾦金金融:量量化交易易,⾦金金融分析,在⾦金金融⼯工程领域,Python不不但在⽤用,且⽤用的最多,⽽而
且重要性逐年年提⾼高。原因:作为动态语⾔言的Python,语⾔言结构清晰简单,库丰富,
成熟稳定,科学计算和统计分析都很⽜牛逼,⽣生产效率远远⾼高于c,c++,java,尤其擅⻓长
策略略回测
图形GUI: PyQT, WxPython,TkInter
Python在⼀一些公司的应⽤用:
⾕谷歌:Google App Engine 、code.google.com 、Google earth 、⾕谷歌爬⾍虫、
Google⼴广告等项⽬目都在⼤大量量使⽤用Python开发
CIA: 美国中情局⽹网站就是⽤用Python开发的
NASA: 美国航天局(NASA)⼤大量量使⽤用Python进⾏行行数据分析和运算
YouTube:世界上最⼤大的视频⽹网站YouTube就是⽤用Python开发的
Dropbox:美国最⼤大的在线云存储⽹网站,全部⽤用Python实现,每天⽹网站处理理10亿个
⽂文件的上传和下载
Instagram:美国最⼤大的图⽚片分享社交⽹网站,每天超过3千万张照⽚片被分享,全部⽤用
python开发
Facebook:⼤大量量的基础库均通过Python实现的
Redhat: 世界上最流⾏行行的Linux发⾏行行版本中的yum包管理理⼯工具就是⽤用python开发的
⾖豆瓣: 公司⼏几乎所有的业务均是通过Python开发的
知乎: 国内最⼤大的问答社区,通过Python开发(国外Quora)
春⾬雨医⽣生:国内知名的在线医疗⽹网站是⽤用Python开发的
除上⾯面之外,还有搜狐、⾦金金⼭山、腾讯、盛⼤大、⽹网易易、百度、阿⾥里里、淘宝 、⼟土⾖豆、新
浪、果壳等公司都在使⽤用Python完成各种各样的任务。
1.1.python是⼀一⻔门什什么样的语⾔言
编程语⾔言主要从以下⼏几个⻆角度为进⾏行行分类,编译型和解释型、静态语⾔言和动态语⾔言、强类
型定义语⾔言和弱类型定义语⾔言,我们先看编译型语⾔言和解释型语⾔言. 稍后再说强类型和弱类

编译和解释的区别是什什么?
编译器器是把源程序的每⼀一条语句句都编译成机器语⾔言,并保存成⼆二进制⽂文件,这样运⾏行行时计算机
可以直接以机器语⾔言来运⾏行行此程序,速度很快;
⽽而解释器器则是只在执⾏行行程序时,才⼀一条⼀一条的解释成机器语⾔言给计算机来执⾏行行,所以运⾏行行速度
是不如编译后的程序运⾏行行的快的.
这是因为计算机不能直接认识并执⾏行行我们写的语句句,它只能认识机器语⾔言(是⼆二进制的形式)
编译型vs解释型
编译型
优点:编译器⼀一般会有预编译的过程对代码进⾏行行优化。因为编译只做⼀一次,运⾏行行时不需要编
译,所以编译型语⾔言的程序执⾏行行效率⾼高。可以脱离语⾔言环境独立运⾏行行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运⾏行行环境⽣生
成机器码,不同的操作系统之间移植就会有问题,需要根据运⾏行行的操作系统环境编译不同的
可执⾏行行⽂文件。
解释型
优点:有良好的平台兼容性,在任何环境中都可以运⾏行行,前提是安装了了解释器(虚拟机)。
灵活,修改代码的时候直接修改就可以,可以快速部署,不⽤用停机维护。
缺点:每次运⾏行行的时候都要解释⼀一遍,性能上不不如编译型语⾔言。
1.2.python的优缺点
先看优点
1. Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易易
懂,初学者学Python,不不但⼊入⻔门容易易,⽽而且将来深⼊入下去,可以编写那些⾮非常⾮非常
复杂的程序。
2. 开发效率⾮非常⾼高,Python有⾮非常强⼤大的第三⽅方库,基本上你想通过计算机实现任何
功能,Python官⽅方库⾥里里都有相应的模块进⾏行行⽀支持,直接下载调⽤用后,在基础库的基
础上再进⾏行行开发,⼤大⼤大降低开发周期,避免重复造轮⼦子。
3. ⾼高级语⾔言————当你⽤用Python语⾔言编写程序的时候,你⽆无需考虑诸如如何管理理你
的程序使⽤用的内存⼀一类的底层细节
4. 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动
使它能够⼯工 作在不不同平台上)。如果你⼩小⼼心地避免使⽤用依赖于系统的特性,那么你
的所有Python程序⽆无需修改就⼏几乎可以在市场上所有的系统平台上运⾏行行
5. 可扩展性————如果你需要你的⼀一段关键代码运⾏行行得更更快或者希望某些算法不不公
开,你可以把你的部分程序⽤用C或C++编写,然后在你的Python程序中使⽤用它们。
6. 可嵌⼊入性————你可以把Python嵌⼊入你的C/C++程序,从⽽而向你的程序⽤用户提供
脚本功能。
再看缺点:
1. 速度慢,Python 的运⾏行行速度相⽐比C语⾔言确实慢很多,跟JAVA相⽐比也要慢⼀一些,因此
这也是很多所谓的⼤大⽜牛不不屑于使⽤用Python的主要原因,但其实这⾥里里所指的运⾏行行速度
慢在⼤大多数情况下⽤用户是⽆无法直接感知到的,必须借助测试⼯工具才能体现出来,⽐比如
你⽤用C运⼀一个程序花了了0.01s,⽤用Python是0.1s,这样C语⾔言直接⽐比Python快了了10倍,
算是⾮非常夸张了了,但是你是⽆无法直接通过⾁肉眼感知的,因为⼀一个正常⼈人所能感知的时
间最⼩小单位是0.15-0.4s左右,哈哈。其实在⼤大多数情况下Python已经完全可以满
⾜足你对程序速度的要求,除⾮非你要写对速度要求极⾼高的搜索引擎等,这种情况下,当
然还是建议你⽤用C去实现的。
2. 代码不不能加密,因为PYTHON是解释性语⾔言,它的源码都是以名⽂文形式存放的,不不
过我不不认为这算是⼀一个缺点,如果你的项⽬目要求源代码必须是加密的,那你⼀一开始就
不不应该⽤用Python来去实现。
3. 线程不不能利利⽤用多CPU问题,这是Python被⼈人诟病最多的⼀一个缺点,GIL即全局解释
器器锁(Global Interpreter Lock),是计算机程序设计语⾔言解释器器⽤用于同步线程的
⼯工具,使得任何时刻仅有⼀一个线程在执⾏行行,Python的线程是操作系统的原⽣生线程。
在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的
执⾏行行。⼀一个python解释器器进程内有⼀一条主线程,以及多条⽤用户程序的执⾏行行线程。即
使在多核CPU平台上,由于GIL的存在,所以禁⽌止多线程的并⾏行行执⾏行行。关于这个问题
的折衷解决⽅方法,我们在以后线程和进程章节⾥里里再进⾏行行详细探讨。
当然,Python还有⼀一些其它的⼩小缺点,在这就不不⼀一⼀一列列举了了,我想说的是,任何⼀一⻔门语
⾔言都不不是完美的,都有擅⻓长和不不擅⻓长做的事情,建议各位不不要拿⼀一个语⾔言的劣势去跟另⼀一个
语⾔言的优势来去⽐比较,语⾔言只是⼀一个⼯工具,是实现程序设计师思想的⼯工具,就像我们之前中
学学⼏几何时,有的时候需要要圆规,有的时候需要⽤用三⻆角尺⼀一样,拿相应的⼯工具去做它最擅
⻓长的事才是正确的选择。之前很多⼈人问我Shell和Python到底哪个好?我回答说Shell是个
脚本语⾔言,但Python不不只是个脚本语⾔言,能做的事情更更多,然后⼜又有钻⽜牛⻆角尖的⼈人说完全
没必要学Python, Python能做的事情Shell都可以做,只要你⾜足够⽜牛B,然后⼜又举了了⽤用Shell
可以写俄罗斯⽅方块这样的游戏,对此我能说表达只能是,不不要跟SB理理论,SB会把你拉到跟
他⼀一样的⾼高度,然后⽤用充分的经验把你打倒。
1.3.python解释器器
当我们编写Python代码时,我们得到的是⼀一个包含Python代码的以.py为扩展名的⽂文本
⽂文件。要运⾏行行代码,就需要Python解释器器去执⾏行行.py⽂文件。
由于整个Python语⾔言从规范到解释器器都是开源的,所以理理论上,只要⽔水平够⾼高,任何⼈人都
可以编写Python解释器器来执⾏行行Python代码(当然难度很⼤大)。事实上,确实存在多种
Python解释器器。
CPython
当我们从Python官⽅方⽹网站下载并安装好Python 2.7后,我们就直接获得了了⼀一个官⽅方版
本的解释器器:CPython。这个解释器器是⽤用C语⾔言开发的,所以叫CPython。在命令⾏行行下运
⾏行行python就是启动CPython解释器器。
CPython是使⽤用最⼴广的Python解释器器。教程的所有代码也都在CPython下执⾏行行。
IPython
IPython是基于CPython之上的⼀一个交互式解释器器,也就是说,IPython只是在交互⽅方
式上有所增强,但是执⾏行行Python代码的功能和CPython是完全⼀一样的。好⽐比很多国产浏览
器器虽然外观不不同,但内核其实都是调⽤用了了IE。
CPython⽤用>>>作为提示符,⽽而IPython⽤用In [序号]:作为提示符。
PyPy
PyPy是另⼀一个Python解释器器,它的⽬目标是执⾏行行速度。PyPy采⽤用JIT技术,对Python代
码进⾏行行动态编译(注意不不是解释),所以可以显著提⾼高Python代码的执⾏行行速度。
绝⼤大部分Python代码都可以在PyPy下运⾏行行,但是PyPy和CPython有⼀一些是不不同的,这就
导致相同的Python代码在两种解释器器下执⾏行行可能会有不不同的结果。如果你的代码要放到
PyPy下执⾏行行,就需要了了解PyPy和CPython的不不同点。
Jython
Jython是运⾏行行在Java平台上的Python解释器器,可以直接把Python代码编译成Java字节
码执⾏行行。
IronPython
IronPython和Jython类似,只不不过IronPython是运⾏行行在微软.Net平台上的Python解
释器器,可以直接把Python代码编译成.Net的字节码。
⼆二.python发展史
1989年年,为了了打发圣诞节假期,Guido(⻳龟叔)开始写Python语⾔言的编译器器。
Python这个名字,来⾃自Guido所挚爱的电视剧Monty Python’s Flying Circus。他
希望这个新的叫做Python的语⾔言,能符合他的理理想:创造⼀一种C和shell之间,功能
全⾯面,易易学易易⽤用,可拓拓展的语⾔言。
1991年年,第⼀一个Python编译器器诞⽣生。它是⽤用C语⾔言实现的,并能够调⽤用C语⾔言的库
⽂文件。从⼀一出⽣生,Python已经具有了了:类,函数,异常处理理,包含表和词典在内的
核⼼心数据类型,以及模块为基础的拓拓展系统。
Granddaddy of Python web frameworks, Zope 1 was released in 1999
Python 1.0 - January 1994 增加了了 lambda, map, filter and reduce.
Python 2.0 - October 16, 2000,加⼊入了了内存回收机制,构成了了现在Python语⾔言
框架的基础
Python 2.4 - November 30, 2004, 同年年⽬目前最流⾏行行的WEB框架Django 诞⽣生
Python 2.5 - September 19, 2006
Python 2.6 - October 1, 2008
Python 2.7 - July 3, 2010
In November 2014, it was announced that Python 2.7 would be
supported until 2020, and reaffirmed that there would be no 2.8 release
as users were expected to move to Python 3.4+ as soon as possible
Python 3.0 - December 3, 2008
Python 3.1 - June 27, 2009
Python 3.2 - February 20, 2011
Python 3.3 - September 29, 2012
Python 3.4 - March 16, 2014
Python 3.5 - September 13, 2015
三.python的安装
⼀一路路确定即可. 记得path下打钩.
四. 第⼀一个python程序
python程序有两种编写⽅方式:
1. 进入cmd控制台. 输入python进入编辑模式. 这时候我们可以直接编写python程序
2. 也可以在.py⽂文件中编写python代码. 通过python命令来执⾏行行python代码
注意: python2中的中⽂文编码会有问题. Python2使⽤用的是ASCII码编码. 处理理不了了中⽂文. 我
们需要替换成utf-8编码.
# -*- encoding:utf-8 -*-
五. 变量量
变量:将运算的中间结果暂存到内存,以便便后续程序调⽤用.
变量量的命名规则:
1, 变量量由字⺟母, 数字,下划线搭配组合⽽而成
2, 不不可以⽤用数字开头,更更不不能是全数字
3,不能是pythond的关键字, 这些符号和字⺟母已经被python占⽤用, 不可以更更改
4,不要⽤用中⽂文
5,名字要有意义
6,不要太⻓长
7, 区分⼤大⼩小写
推荐⼤大家使⽤用驼峰体或者下划线命名
驼峰体: 除⾸首字⺟母外的其他每个单词⾸首字⺟母⼤大写
下划线: 每个单词之间⽤用下划线分开
六.常量量
在python中不存在绝对的常量量. 约定俗成, 所有字⺟母⼤大写就是常量量
例例如: PI = 3.141592653
BIRTH_OF_SYLAR = 1990
七.注释
有时候我们写的东⻄西不⼀一定都是给⽤用户看的. 或者不希望解释器执⾏行行. 那我们可以使⽤用#来
注释掉代码. 被注释的内容是不会执⾏行行的.可以⽅方便便后⾯面的程序员来拜读你的代码
单⾏行行注释: # 被注释的内容
多⾏行行注释:''' 被注释的内容 ''', """这个也是多⾏行行注释"""
八.python的基本数据类型
什什么是数据类型?
我们⼈人类可以很容易易的分清数字与字符的区别,但是计算机并不不能呀,计算机虽然很强⼤大,但从某种⻆角
度上看⼜又很傻,除⾮非你明确的告诉它,1是数字,“汉”是⽂文字,否则它是分不不清1和‘汉’的区别的,因此,在
每个编程语⾔言⾥里里都会有⼀一个叫数据类型的东东,其实就是对常⽤用的各种数据类型进⾏行行了了明确的划分,你想
让计算机进⾏行行数值运算,你就传数字给它,你想让他处理理⽂文字,就传字符串串类型给他。Python中常⽤用的数
据类型有多种,今天我们暂只讲3种, 数字、字符串串、布尔类型(命题).
8.1 整数(int)
常⻅见的数字都是int类型. ⽤用于计算或者⼤大⼩小的比较
在32位机器上int的范围是: -2**31~2**31-1,即-2147483648~2147483647
在64位机器上int的范围是:  -2**63~2**63-1,即-9223372036854775808~9223372036854775807
够你⽤用了了吧. 注意这些是整数.
8.2 字符串串(str)
在Python中,凡是⽤用引号引起来的,全是字符串串.
字符串串可以⽤用单引号,双引号,或者三引号引起来,没有什什么区别,只是⼀一些特殊的格式需要不不⽤用的引号
⽐比如:
msg = "My name is Alex , I'm 22 years old!" 这个就需要单双引号配合。
msg = """
今天我想写⾸首⼩小诗,
歌颂我的同桌,
你看他那乌⿊黑的短发,
好像⼀一只炸⽑毛鸡。
"""
想多⾏行行赋值⼀一个字符串串,就需要三引号。
数字类型有 +-*/ 字符串串有么?
字符串串只有 + *。
#字符串串的拼接
s1 = 'a '
s2 = 'bc'
#print(s1 + s2)
#相乘 str*int
name = '坚强'
#print(name*8)
8.3 布尔值(bool), 真或者假, True和False
九.⽤用户交互
使⽤用input()函数,可以让我们和计算机互动起来
语法:
内容 = input(提⽰示信息)
这⾥里里可以直接获取到⽤用户输入的内容
⼗十.流程控制if语句句
你在⽣生活中是不不是经常遇到各种选择,⽐比如玩⾊色⼦子,猜⼤大⼩小,⽐比如选择⾛走那条路路回家?Python程序中也会
遇到这种情况,这就⽤用到了了if语句句。
第⼀一种语法:
if 条件: #引号是将条件与结果分开。
结果1。 # 四个空格,或者⼀一个tab键,这个是告诉程序满⾜足这个条件的
结果2。
如果条件是真(True) 执⾏行行结果1, 然后结果2, 如果条件假(False) 直接结果2
第⼆二种语法:
If 条件:
结果1
else:
结果2
代码3
第三种语法:
If 条件1:
结果1
elif 条件2:
结果2
..
else:
结果n
第四种语法(嵌套):
If 条件1:
结果1
If 条件2:
结果2
else:
结果3
else:
结果4
可以⽆无限的嵌套. 但是在实际开发中. 尽量量不要超过三层嵌套

猜你喜欢

转载自www.cnblogs.com/tubuqianqiulu/p/9255801.html