人生苦短,我用python。看图说话

一.python简介与发展:

python 是一种面向对象的解释性计算机程序设计语言。

python由荷兰人Guido van Rossum 于1989年发明。

1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。

1994年1月 python 1.0诞生,增加lambda,map,filter and reduce

1999年,python web的鼻祖 Zope 1 发布

2000年10月16号 ,python2.0诞生,加入内存回收机制,构成现在Python语言框架

2004年11月30号,python 2.4诞生,同年web框架django诞生。

2006年11月19号,python 2.5诞生

2008年10月1号,  python2.6诞生

2008年12月3号,  python3.0诞生

2009年6月27号,  python3.1诞生

2010年7月3号,    python 2.7诞生

提示:由于python2.6与3.0差距较大,于是推出过渡版本,并于2014年十一月,宣布将支持Python 2.7至2020,并重申,将不会有2.8版本,用户将移动到Python 3.4

2011年2月20号, python3.2诞生

2012年11月29号,python3.3诞生

2014年3月16号,  python3.4诞生

2015年11月13号,python3.5诞生

二.目前python的主要应用领域:

  云计算:云计算最火的语言,如:openstack

  web开发:很多大型的网站均有python开发,如:Youtube,Dropbox,豆瓣等等,python的web框架:Django,flask

科学运算,人工智能:典型NumPy,SciPy, Matplotlib, Enthought librarys,pandas

  运维:不会开发的运维,不是好运维,不会开发的运维,必将被淘汰

  金融:量化交易,金融分析等等。。。

  图形GUI:PyQT, WxPython,TkInter

三.python主要应用的公司:

  YouTube、Instagram、豆瓣、Google、Yahoo等,NASA(美国航空航天局)等等。。。

四.python的优缺点:

  优点:

  1.Python的定位是“优雅”、“明确”、“简单”,"易学",“免费”,“简单”。

  2.开发效率非常高,Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、 CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要 安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、 Twisted和Python图像库等等。  

  3.高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节

  4.可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行

  5.可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。

  6.可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

  7.Python确实是一种十分精彩又强大的语言。它合理地结合了高性能与使得编写程序简单有趣的特色。

  8.规范的代码。Python采用强制缩进的方式使得代码具有极佳的可读性。

五.python的种类:

  1.Cpython:python的官网版本,使用C语言实现,使用最为广泛,Cpython实现会将源文件(py文件)转换成字节码(pyc文件),然后运行在python虚拟机上。

  2.Jython:python的java实现,Jython会将python代码动态编译成Java字节码,然后在JVM上运行。

  3.IronPython:python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)

  4.PyPy(特殊) Python实现的Python,将Python的字节码字节码再编译成机器码

  5.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

到此为止,一下内容纯干货:

########################################################################################

第一个程序从hello world开始,并且这是2.7与3.6的打印区别:

title:python基础之数据类型与变量:

一 变量

变量:是用来存储值的所在处(保存状态),它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在声明变量时也可指定它的数据类型。所有变量都具有数据类型,以决定能够存储哪种数据

声明变量:

# -*-coding:utf-8-*-

name = 'cyy'

  上述代码声明了一个变量,变量名为: name,变量name的值为:"cyy" 

  定义:允许作为名字的有效字符串集合

  • 名字必须有实际意义,可读性好
  • 首字母必须是字母或下划线(_)
  • 剩下的字符可以是字母和数字或者下划线
  • 大小写敏感
  • 两种风格:conn_obj或ConnObj
  • 不能使用关键字,不能使用内建
  • 变量名的第一个字符不能是数字
  • 以下关键字不能声明为变量名
    ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

变量的赋值:

  链式赋值:y=x=z=1

  

  多元赋值:x,y=1,2 x,y=y,x

 

  

  增量/减量/乘量/除量 赋值:

  

变量解压赋值:

  

数据类型:数据类型是在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。数据类型分类:

1、数字

int(整型)

python2.*与python3.*关于整型的区别

python2.*
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647 在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
python3.*整形长度无限制
long(长整型)
 python2.*:

跟C语言不同,Python的长整型没有指定位宽,也就是说Python没有限制长整型数值的大小,
但是实际上由于机器内存有限,所以我们使用的长整型数值不可能无限大。
在使用过程中,我们如何区分长整型和整型数值呢?
通常的做法是在数字尾部加上一个大写字母L或小写字母l以表示该整数是长整型的,例如:
a = 9223372036854775808L
注意,自从Python2起,如果发生溢出,Python会自动将整型数据转换为长整型,
所以如今在长整型数据后面不加字母L也不会导致严重后果了。 python3.*
长整型,整型统一归为整型

eg:

  
float(浮点型)
   浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等的。浮点数可以用数学写法,如1.233.14-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

    整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的,而浮点数运算则可能会有四舍五入的误差

 2、布尔值
  真(True)或假(False)
  0和空,None都是False,其他的全部为True
3、字符串
   特别声明:字符串是不可以修改的
创建字符串
  a='hello word'
  注:单引号和双引号没有任何区别
字符串常见方法:
name="zzl"
print(name.capitalize())#首字母变成大写
print(name.center(30)) # 居中
print(name.center(30,'*'))#居中加填充 msg='hello world'
print(msg.count('l'))#统计出现l在msg中出现的次数
print(msg.count('l',0,3))#统计l在msg中0到3之间l出现的次数
print(msg.count('l',-1))#统计l在msg中最后一个字符中出现l的次数
print(msg.endswith('s'))#判断msg是不是以s结尾,不是则为False,是为True
print(msg.startswith('h'))#判断msg是不是以h开头,不是则为False,是为True
print(msg.find('l'))#统计l出现的位置,如果不存在,则返回-1,存在返回位置,存在多个,只返回第一个出现的位置
print(msg.find('l',3,9))#统计l在msg的3到9之间,l出现的位置
print(msg.index('e'))#index与find本质区别是:index已经知道msg中存在e,然后进行查找,如果不存在会报错。
print(msg.isdigit())#判断字符串中是否包含数字,包含数字为False,不包含为True msg='hello world'#多用于字符串拼接
msg_new='*'.join(msg)
print(msg_new) msg='root:x:0:0:root:/bin/bash'
print(msg.split(':')) #split分割
print(msg.split(':',maxsplit=1))#以:为分割符,最大分割一次 msg_list=msg.split(':')
print(':'.join(msg_list))#按照:拼接字符串 msg='helLo world'
print(msg.upper())#小写转化为大写
print(msg.swapcase())#大小写转换 msg='*****zzl*****'
print(msg.strip('*'))#去掉首尾的指定字符
print(msg.lstrip('*'))#去除左边指定字符
print(msg.rstrip('*'))#去除右边指定字符 print(msg.replace('z','y')) #替换字符,不指定个数全部替换,指定几个就替换几个
print(msg.replace('z','y',1))

不常用的方法:

#不常用的方法
msg='hello world'
print(msg.isalpha())#msg是纯字母返回True,不是则返回False
print(msg.isidentifier())#msg是内置标识符,返回True,否则返回False
print(msg.isspace())#msg是空格,返回True,反之,返回False
print(msg.istitle())#msg是标题,也就是首字母大写,返回True
print(msg.ljust(10))#10个字符左对齐
print(msg.ljust(10,'*'))#10个字符左对齐,10个字符*填充
print(msg.rjust(10))#10个字符右对齐
print(msg.rjust(10,'*'))#10个字符右对齐,10个字符*填充
print(msg.zfill(20))#总长度20个,不足则在右边添加0 message='''aaa
bbb
ccc
ddd
'''
print(message.splitlines()) #按照行数切分

字符串索引,再看解压

msg='hello'
#字符串索引操作
print(msg[4])
print(msg[-2])
#字符串的切分操作
print(msg[0:3]) #切分原则:顾头不顾尾
print(msg[0:])
print(msg[:3])
print(msg[0:2000:2])#按两个字符切分
print(msg[::-1])#hello倒过来 #再看变量解压操作
msg='hello'
x,y,z,*_=msg
print(x)
print(y)
print(z)
x,y,z='abc','aaa','xxx'
print(x)
print(y)
print(z)
4、列表

列表的内置方法:

  

name_list=['zzl','cyy','zl','cy']
#列表的索引操作
print(name_list[-1])
print(name_list[0:2])
print(name_list[::-1])
#列表的内置方法
#append增加到末尾
name_list=['zzl','cyy','zl','cy']
name_list.append('yy')
print(name_list)

#insert插入到指定位置
name_list=['zzl','cyy','zl','cy']
name_list.insert(0,'ylqh')
print(name_list)

#pop删除
name_list.pop()#默认从右边删除
name_list.pop(2)#指定删除第二个
print(name_list)
#清空列表
name_list=['zzl','cyy','zl','cy']
name_list.clear()
print(name_list) #复制一份copy
name_list=['zzl','cyy','zl','cy']
i=name_list.copy()
print(i) #计数
name_list=['zzl','cyy','zl','yy','cy','yy']
print(name_list.count('yy'))#yy出现了几次 #两个列表合并
name_list=['zzl','cyy','zl','cy']
nlist=['ylqi','lift']
name_list.extend(nlist)
print(name_list)
#单独加入列表
every_lis='xxx'
name_list.extend(every_lis)
print(name_list)

#remove移除
name_list=['zzl','cyy','zl','cy']
name_list.remove('zl')#按照元素名移除,有多个重复的元素值时,移除第一个
print(name_list) #reverse反序排列
name_list=['zzl','cyy','zl','cy']
name_list.reverse()#反序
print(name_list)

#sort排列
name_list=['d','c','A','1','@','*']
name_list.sort()#按照字符编码表排列
print(name_list)

#统计列表有几个元素或说成列表的长度
name_list=['zzl','cyy','zl','cy']
print(len(name_list))#统计长度 #判断是否在列表里面
# name_list=['zzl','cyy','zl','cy']
print ('zl' in name_list)
print ('l' in name_list)

队列(先进先出)

队列
方法一:
lis=[]
lis.append(1)
lis.append(2)
lis.append(3)
lis.append(4)
print(lis)
print(lis.pop(0))
print(lis)
print(lis.pop(0))
print(lis)
print(lis.pop(0))
print(lis)
print(lis.pop(0))
print(lis) 方法二:
l=[]
l.insert(0,1)
l.insert(0,2)
l.insert(0,3)
l.insert(0,4)
print(l)
print(l.pop())
print(l)
print(l.pop())
print(l)
print(l.pop())
print(l)
print(l.pop())
print(l) 方法一 and 二 输出结果: [4, 3, 2, 1]
1
[4, 3, 2]
2
[4, 3]
3
[4]
4
[]

堆栈:(先进后出)

#堆栈:(先进后出)

lis=[]
lis.append(1)
lis.append(2)
lis.append(3)
lis.append(4)
print(lis)
print(lis.pop())
print(lis)
print(lis.pop())
print(lis)
print(lis.pop())
print(lis)
print(lis.pop())
print(lis) 输出结果:
[1, 2, 3, 4]
4
[1, 2, 3]
3
[1, 2]
2
[1]
1
[]

5、元组(不可变列表)

 
6、字典(无序)

常用操作:

  • 索引
  • 新增
  • 删除
  • 键、值、键值对
  • 循环
  • 长度

                                                         座右铭:没有最好,只有更好

python入门必备知识总结的更多相关文章

  1. 简述Python入门小知识

    如今的Python开发工程师很受企业和朋友们的青睐,现在学习Python开发的小伙伴也很多,本篇文章就和大家探讨一下Python入门小知识都有哪些. 扣丁学堂简述Python入门小知识Python培训 ...

  2. Python入门 ---基础知识

    Python入门不知道这些你还是承早放弃吧!真的 Python 简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言 ...

  3. Python 基础:入门必备知识

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:程序员野客 先看下咱们的基础目录1 标识符2 关键字3 引号4 编码5 ...

  4. Python基础入门必备知识

    1 标识符标识符是编程时使用的名字,用于给变量.函数.语句块等命名,Python 中标识符由字母.数字.下划线组成,不能以数字开头,区分大小写. 以下划线开头的标识符有特殊含义,单下划线开头的标识符, ...

  5. 浅谈JavaWEB入门必备知识之Servlet入门案例详解

    工欲善其事.必先利其器,想要成为JavaWEB高手那么你不知道servlet是一个什么玩意的话,那就肯定没法玩下去,那么servlet究竟是个什么玩意?下面,仅此个人观点并通过一个小小的案例来为大家详 ...

  6. Flum入门必备知识

    1.flume概念 flume是分布式的,可靠的,高可用的,用于对不同来源的大量的日志数据进行有效收集.聚集和移动,并以集中式的数据存储的系统. flume目前是apache的一个顶级项目. flum ...

  7. Python入门基础知识(1) :locals() 和globals()

    Python有两个内置的函数,locals() 和globals(),它们提供了基于字典的访问局部和全局变量的方式. 首先,是关于名字空间的一个名词解释.是枯燥,但是很重要,所以要耐心些.Python ...

  8. python入门基本知识

    1. 什么是语言 语言是一个事物与另外一个事物沟通的介质. python则是人(程序员)与计算机沟通的介质. 2. 什么是编程 编程就是程序员将自己想要让计算机做的事情用编程语言翻译出来写到一系列的文 ...

  9. python入门基础知识

    1.python环境的安装 python2 python3 安装后添加环境变量 2.编码 最早编码ASCII码,主要有英文,数字,字符.一字节(byte),八位(bit),代表一个字符 unicode ...

随机推荐

  1. Mac下quick-cocos2d-x player 无法运行解决方案

    今天打算在Mac开发我的游戏,因为游戏用的2.2.5版的player,没有安装版.在Mac上运行player时提示player文件已经损坏. 解决方法:在shell下执行如下指令即可 mv $QUIC ...

  2. sftp 服务器外网访问设置

    这个是需要在本机上设定用户名的.根据不同的用户权限.然后让不同的人来到本机上取得数据. 参考一下有用的文章:http://www.ericstockwell.com/?p=54       (强烈建议 ...

  3. boost xpressive 例子

    1.效果图: 我有一个wordpress博客,每次在csdn上写完博客,都需要复制到wordpress中,还需要手动修改<pre>和图片地址,比较麻烦,所以做了这个工具. 功能: 1.把C ...

  4. 计算机就是用命换的行业,多干一年程序猿,寿命将减少2年,干20年的编程苦力,基本60岁之前你就要OVER了

    if  c++==python:(869710179) 2013-7-6 10:21:31 计算机本来就是用命换的行业 爱笑的眼睛(373213735) 2013-7-6 10:21:55 if  c ...

  5. HTML <textarea> 标签的 wrap 属性

    HTML <textarea> 标签的 wrap 属性 wrap 属性 通常情况下,当用户在输入文本区域中键入文本后,浏览器会将它们按照键入时的状态发送给服务器.只有用户按下 Enter ...

  6. 使用php完成常见的"文件上传"功能

    文件上传现在都是很常见的了,可以上传文件,上传头像等,不同的浏览器"文件上传"有不同的效果 先看下火狐浏览器的效果是这样的: 再看下IE浏览器是这样的: 还有很多其他的浏览器,就不 ...

  7. Java 使用httpclient Post与cxf 发布的Webservice通信

    使用cxf发布的webservice不知道什么情况总会有时管用有时不管用,对于项目来说这肯定不行.又不想改动webservice因为代码太多.人懒! 于是便使用httpclient与webservic ...

  8. 算法笔记_015:快速排序(Java)

    目录 1 问题描述 2 解决方案 2.1 快速排序原理简介 2.2 具体编码 1 问题描述 给定一组数据,使用快速排序得到这组数据的非降序排列. 2 解决方案 2.1 快速排序原理简介 引用自百度百科 ...

  9. 驱动04.平台总线驱动模型——点亮LED灯

    1 平台总线的简介 平台总线是一种虚拟的总线,相应的设备则为platform_device,而驱动则为platform_driver.总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的 ...

  10. svg动画学习

    首先我们定义一块画布,然后在上面画一个圆形. 他看起来应该是这个样子的:(每一个实例我都会附加图片以及demo链接,方便直观的理解与源代码的查看,查看的时候请使用标准浏览器) 点击查看Demo 现在我 ...