Python初识与简介【开篇】

目录

一、扯淡html

二、Python历史前端

三、Python简介java

四、Python应用python

五、为何是python而不是其余语言?linux

六、Python的种类ios

七、Python的特色git

八、Python设计哲学程序员

九、Python版本github

十、Python环境(安装、解释器、编码、注释、传参、变量、流程控制、数据类型、运算、文本操做)算法

 

一、扯淡

接触Python的一个契机是在作Nagios监控的时候,发现了Python语言的强大,也能够实现高度的自动化,因此才开始慢慢的触及它,最近看到学好Python还能够成为全栈工程师,全栈是什么,就是什么都能作,能写后端、前端、GUI、数值计算、科学运算、网络编程、大数据开发、组件集成、网络服务、图像处理等等

小提示:

二、Python历史

Guido为了打发圣诞节的无趣,于1989年发明在荷兰设计出来,第一个公开发行版发行于1991年。

Python语法简洁清晰,特点之一是强制用空白符做为语句缩进。

历史详见维基百科百度百科介绍

三、Python简介

说了那么多,如今客观的说些重点简介:

Python 的设计具备很强的可读性,相比其余语言常用英文关键字,其余语言的一些标点符号,它具备比其余语言更有特点语法结构。

  • Python 是一种解释型语言: 这意味着开发过程当中没有了编译这个环节。相似于PHP和Perl语言。

  • Python 是交互式语言: 这意味着,您能够在一个Python提示符,直接互动执行写你的程序。

  • Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

  • Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持普遍的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

四、Python应用

应用场景

  • Web编程
  • 系统管理任务
  • 数学处理(数据分析、机器学习
  • 文本处理(爬虫)
  • 云计算
  • 运维开发
  • 自动化测试
  • 图形处理、多媒体应用
  • 网络编程
  • 游戏开发
  • 黑客({}POC脚本、木马)
  • ...

因为Python有太多知名公司在用了,以下数据可作参考:

谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬虫、广告等项目都在大量使用Python开发

CIA: 美国中情局网站就是用Python开发的

NASA: 美国航天局(NASA)大量使用Python进行数据分析和运算

YouTube:世界上最大的视频网站YouTube就是用Python开发的

Dropbox:美国最大的在线云存储网站,所有用Python实现,天天网站处理10亿个文件的上传和下载

Instagram:美国最大的图片分享社交网站,天天超过3千万张照片被分享,所有用python开发

Facebook:大量的基础库均经过Python实现的

Redhat: 世界上最流行的Linux发行版本中的yum包管理工具就是用python开发的

除上面以外,还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝 、土豆、新浪、果壳、豆瓣、知乎、春雨医生等公司都在使用Python完成各类各样的任务。

最新编程语言排名可见TIBOE编程语言社区

 
 由上图可见,总体反映出Python应用愈来愈普遍而且也逐渐获得业内的承认!!!
 互联网公司普遍使用Python来作的事通常有: 自动化运维、自动化测试、大数据分析、爬虫、Web 等。
 

五、为何是Python而不是其余语言?

C 和 Python、Java、C#等

    C语言: 代码编译获得 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工做

其余语言: 代码编译获得 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行

Python这门语言是由C开发而来,对于使用:

  •   Python的类库齐全而且使用简洁,若是要实现一样的功能,Python 10行代码能够解决,C可能就须要100行甚至更多.
  •   Linux原装Python,其余语言没有;以上几门语言都有很是丰富的类库支持

因此,Python和其余语言没有什么本质区别,其余区别在于:擅长某领域、人才丰富、先入为主。

六、Python的种类

  • Cpython    程序----(c解释器)----(字节码)----(机器码)-----cpu
        Python的官方版本,使用C语言实现,使用最为普遍,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),而后运行在Python虚拟机上。
  • Jyhton    程序----(java解释器)----(字节码)----(机器码)-----cpu
        Python的Java实现,Jython会将Python代码动态编译成Java字节码,而后在JVM上运行。
  • IronPython    程序----(c#解释器)----(字节码)----(机器码)-----cpu
        Python的C#实现,IronPython将Python代码编译成C#字节码,而后在CLR上运行。(与Jython相似)
  • PyPy(特殊)    程序----(c#解释器)----(字节码)----(机器码)-----cpu
        Python实现的Python,将Python的字节码字节码再编译成机器码。
  • RubyPython、Brython ...

以上除PyPy以外,其余的Python的对应关系和执行流程以下:

 

PyPy,在Python的基础上对Python的字节码进一步处理,从而提高执行速度!

 

七、Python特色

  • 1.易于学习:Python有相对较少的关键字,结构简单,和一个明肯定义的语法,学习起来更加简单。

  • 2.易于阅读:Python代码定义的更清晰。

  • 3.易于维护:Python的成功在于它的源代码是至关容易维护的。

  • 4.一个普遍的标准库:Python的最大的优点之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。

  • 5.互动模式:互动模式的支持,您能够从终端输入执行代码并得到结果的语言,互动的测试和调试代码片段。

  • 6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工做)到许多平台。

  • 7.可扩展:若是你须要一段运行很快的关键代码,或者是想要编写一些不肯开放的算法,你可使用C或C++完成那部分程序,而后从你的Python程序中调用。

  • 8.数据库:Python提供全部主要的商业数据库的接口。

  • 9.GUI编程:Python支持GUI能够建立和移植到许多系统调用。

  • 10.可嵌入: 你能够将Python嵌入到C/C++程序,让你的程序的用户得到"脚本化"的能力。

八、Python设计哲学

Python的设计哲学是“优雅”、“明确”、“简单”。Python开发者的哲学是“用一种方法,最好是只有一种方法来作一件事”。

九、Python版本

python 2 vs 3:

    1. 默认支持中文
    2. 不兼容2.x
    3. 核心语法调整,更易学
    4. 新特性默认只在3.x上有

python 3.X不兼容 2.X版本,为何要开发 3.X版本呢?由于 python发展了20多年,里面有不少重复的功能和模块,不少代码也变得不那么简洁,因此Guido决定进行一次完全的升级,原则是去繁从简,从而有了后续的 Python 3.X版本。

2.7版本 print "yard" or print ("yard")
3.x版本 print ("yard")

python 3.X 源码文件默认使用utf-8编码

  • 2.x = 默认编码 =ASSIC =不支持
  • 3.x = 默认编码 =UNICODE =默认支持中文

两个版本模块名区别

注:twisted模块还未彻底支持python3.X

语法区别

1)去除了<>,所有改用!= 
2)去除``,所有改用repr() 
3)关键词加入as 和with,还有True,False,None 
4)整型除法返回浮点数,要获得整型结果,请使用// 
5)加入nonlocal语句。使用noclocal x能够直接指派外围(非全局)变量 
6)去除print语句,加入print()函数实现相同的功能。一样的还有 exec语句,已经改成exec()函数
7)改变了顺序操做符的行为,例如x<y,当x和y类型不匹配时抛出TypeError而不是返回随即的 bool值  
8)输入函数改变了,删除了raw_input,用input代替: 
9)去除元组参数解包。不能def(a, (b, c)):pass这样定义函数了 
10) 新式的8进制字变量,相应地修改了oct()函数。 
11) class Foo:这种写法不能用了,改为class Foo(object)
 
总结: python2.x 是遗产, python3.x是如今和将来的语言

十、Python环境 

安装Python

windows:

1
2
3
4
5
6
7
1 、下载安装包
     https: / / www.python.org / downloads /
2 、安装
     默认安装路径:C:\python27
3 、配置环境变量
     【右键计算机】 - - 》【属性】 - - 》【高级系统设置】 - - 》【高级】 - - 》【环境变量】 - - 》【在第二个内容框中找到 变量名为Path 的一行,双击】  - - > 【Python安装目录追加到变值值中,用 ; 分割】
     如:原来的值;C:\python27,切记前面有分号

linux:

1
2
3
无需安装,原装Python环境
 
ps:若是自带 2.6 ,请更新至 2.7

  linux上安装python3.6.5

  

一、准备编译环境(环境若是不对的话,可能遇到各类问题,好比wget没法下载https连接的文件)
yum groupinstall 'Development Tools'
yum install zlib-devel bzip2-devel  openssl-devel ncurses-devel
二、下载 Python3.6.5代码包
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz

在安装包中有一个README的文件,里面有写如何安装
三、解压
tar Jxvf Python-3.6.5.tar.xz
四、编译安装
cd Python-3.6.5
./configure --prefix=/usr/local/python3
make && make install
五、作软链
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
六、升级pip到最新版本:
pip install --upgrade pip
七、测试
python3

八、如何设置默认Python3.6.5
若是咱们须要设置默认python直接运行默认的Python3.6.5版本,那须要简单调整软连接。

备份默认文件
cd /usr/local/
mv python python.bak
mv pip pip.bak
从新建立软链接,其实这个时候咱们就能够默认看到Python就是3.6.5版本
ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

 

 

更新Python

windows:

1
卸载重装便可

linux:

Linux的yum依赖自带Python,为防止错误,此处更新其实就是再安装一个Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
查看默认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  - / 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代码

在 /home/dev/ 目录下建立 hello.py 文件,内容以下:

1
print  "hello,world"

执行 hello.py 文件,即: python /home/dev/hello.py

python内部执行过程以下:

2、解释器

上一步中执行 python /home/dev/hello.py 时,明确的指出 hello.py 脚本由 python 解释器来执行。

若是想要相似于执行shell脚本同样执行python脚本,例: ./hello.py ,那么就须要在 hello.py 文件的头部指定解释器,以下:

1
2
3
#!/usr/bin/env python
 
print  "hello,world"

如此一来,执行: ./hello.py 便可。

ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py

3、内容编码

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码没法表示中文

1
2
3
#!/usr/bin/env python
 
print  "你好,世界" 

改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:

1
2
3
4
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
print  "你好,世界"

4、注释

  当行注视:# 被注释内容

  多行注释:""" 被注释内容 """

5、执行脚本传入参数

Python有大量的模块,从而使得开发Python程序很是简洁。类库有包括三中:

  • Python内部提供的模块
  • 业内开源的模块
  • 程序员本身开发的模块

Python内部提供一个 sys 的模块,其中的 sys.argv 用来捕获执行执行python脚本时传入的参数

1
2
3
4
5
6
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import  sys
 
print  sys.argv 

6、 pyc 文件

执行Python代码时,若是导入了其余的 .py 文件,那么,执行过程当中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译以后产生的字节码。

ps:代码通过编译能够产生字节码;字节码经过反编译也能够获得代码。

7、变量

一、声明变量

1
2
3
4
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
name  =  "wupeiqi"

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

变量的做用:昵称,其代指内存里某个地址中保存的内容

变量定义的规则:

  • 变量名只能是 字母、数字或下划线的任意组合
  • 变量名的第一个字符不能是数字
  • 如下关键字不能声明为变量名
    ['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']

二、变量的赋值

复制代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-

name1 = "wupeiqi"
name2 = "alex"


复制代码
 
复制代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-

name1 = "wupeiqi"
name2 = name1


复制代码
8、输入
1
2
3
4
5
6
7
8
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
# 将用户输入的内容赋值给 name 变量
name  =  raw_input ( "请输入用户名:" )
 
# 打印输入的内容
print  name

输入密码时,若是想要不可见,须要利用getpass 模块中的 getpass方法,即:

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import  getpass
 
# 将用户输入的内容赋值给 name 变量
pwd  =  getpass.getpass( "请输入密码:" )
 
# 打印输入的内容
print  pwd

9、流程控制和缩进

需求1、用户登录验证

1
2
3
4
5
# 提示输入用户名和密码
 
# 验证用户名和密码
#     若是错误,则输出用户名或密码错误
#     若是成功,则输出 欢迎,XXX!

需求2、根据用户输入内容输出其权限

1
2
3
4
5
6
# 根据用户输入内容打印其权限
 
# alex --> 超级管理员
# eric --> 普通管理员
# tony --> 业务主管
# 其余 --> 普通用户
 
外层变量,能够被内层变量使用
内层变量,没法被外层变量使用
 
10、初识基本数据类型
一、数字

2 是一个整数的例子。
长整数 不过是大一些的整数。
3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是复数的例子。

int(整型)

  在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
  在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型)
  跟C语言不一样,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上因为机器内存有限,咱们使用的长整数数值不可能无限大。
  注意,自从Python2.2起,若是整数发生溢出,Python会自动将整数数据转换为长整数,因此现在在长整数数据后面不加字母L也不会致使严重后果了。
float(浮点型)
  浮点数用来处理实数,即带有小数的数字。相似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
  复数由实数部分和虚数部分组成,通常形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注:Python中存在小数字池:-5 ~ 257
 
二、布尔值
  真或假
  1 或 0
三、字符串
"hello world"
万恶的字符串拼接:
  python中的字符串在C语言中体现为是一个字符数组,每次建立字符串时候须要在内存中开辟一块连续的空,而且一旦须要修改字符串的话,就须要再次开辟空间,万恶的+号每出现一次就会在内从中从新开辟一块空间。
字符串格式化
1
2
3
4
name  =  "alex"
print  "i am %s "  %  name
 
#输出: i am alex

PS: 字符串是 %s;整数 %d;浮点数%f

字符串经常使用功能:
  • 移除空白
  • 分割
  • 长度
  • 索引
  • 切片
四、列表
建立列表:
1
2
3
name_list  =  [ 'alex' 'seven' 'eric' ]
name_list =  list ([ 'alex' 'seven' 'eric' ])

基本操做:

  • 索引
  • 切片
  • 追加
  • 删除
  • 长度
  • 切片
  • 循环
  • 包含
五、元祖
建立元祖:
1
2
3
ages  =  ( 11 22 33 44 55 )
ages  =  tuple (( 11 22 33 44 55 ))
基本操做:
  • 索引
  • 切片
  • 循环
  • 长度
  • 包含
六、字典(无序)
建立字典:
1
2
3
person  =  { "name" "mr.wu" 'age' 18 }
person  =  dict ({ "name" "mr.wu" 'age' 18 })

经常使用操做:

  • 索引
  • 新增
  • 删除
  • 键、值、键值对
  • 循环
  • 长度
PS:循环,range,continue 和 break
 
11、运算
算数运算:

比较运算:

赋值运算:

逻辑运算:

成员运算:

身份运算:

位运算:

运算符优先级:

更多内容:猛击这里

12、初识文本的基本操做
 
打开文件:
  file_obj = file("文件路径","模式")
打开文件的模式有:
  • r,以只读方式打开文件
  • w,打开一个文件只用于写入。若是该文件已存在则将其覆盖。若是该文件不存在,建立新文件。
  • a,打开一个文件用于追加。若是该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容以后。若是该文件不存在,建立新文件进行写入。
  • w+,打开一个文件用于读写。若是该文件已存在则将其覆盖。若是该文件不存在,建立新文件。

读取文件的内容:

1
2
3
4
5
6
7
8
9
# 一次性加载全部内容到内存
obj.read()
 
# 一次性加载全部内容到内存,并根据行分割成字符串
obj.readlines()
 
# 每次仅读取一行数据
for  line  in  obj:
   print  line

写文件的内容:

1
obj.write( '内容' )

关闭文件句柄:

1
obj.close()

 详细参考连接:http://www.cnblogs.com/wupeiqi/articles/4906230.html

相关文章
相关标签/搜索