[第一节]python基础知识

本文详细介绍Python的基础知识,包括Python的历史背景、特点、应用场景、安装配置流程、代码执行原理、解释器种类、编程规范以及基本数据类型等内容。

写在前面:

  目前python的最新版本是3.6。本博客以3.x版为主,会附带提及2.7版本与此版本的不同之处!

****************************************************************************

目录:

1. python简介.

2. python的特点.

3. python的用途.

4. 选择python的目的.

5. 安装python.(linux环境)

6. python代码的执行过程.

7. python解释器. 

8. python编程风格. 

9. python数据类型. 

10.运行第一个程序.


正文:

1. python简介: (来自百度百科)

  Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者。

2. python的特点:

  (1)Python是一种面向对象、解释型计算机程序设计语言。语法简洁清晰,强制用空白符作为语句缩进。 

  (2)Python具有丰富和强大的库,又被称为胶水语言。能把其他语言(如C/C++)写的模块很轻松的结合在一起。 

  (3)python的优点:

    1)简单,优雅,明确
    2)强大的模块三方库
    3)易移植
    4)面向对象
    5)可扩展(c\java\c#...)
  (4)python的缺点:

    1)代码不能加密
    2)速度慢
    3)...
3. python的用途:

  (1)Web网站:有很多优秀的开源Web框架,比如Django(最流行)、Tornado(轻量级、异步)、Flask(微型)、Web.py(简单)等。 

  (2)数据采集:有好用的http库,比如urllib2、requests等。还有高级的屏幕爬取及网页采集框架scrapy。并对网页解析也有很多库,比如lxml、xpath、BeautifulSoup等。  

  (3)大数据分析:常用模块有Numpy、Pandas。并支持写MapReduce、PySpark处理Spark RDD(弹性分布式数据集)。 

  (4)运维自动化:编写脚本、Web平台,自动化日常工作。

  (5)科学计算:在科学计算也应用越来越广泛,常用的模块有Numpy、SciPy。 

    ...... 

4. 选择python的目的:

  首先,python语法简单明了,不像java、C等编程语言复杂的语法令人晕头转向;

  其次,很多人都不是编程科班出身,没有任何编程功底,因而学习python能够很快的上手。

  第三,python在自动化运维方面表现出众,用python能够快速开发出轻量级的自动化运维工具,能大大节约运维成本。 

  第四,python是跨平台的编程语言,在目前所有的操作系统上都能运行,即实现了"一次编译到处运行"的特点.   

  第五,python有许多别人开发好的标准库,即前人造好的轮子,我们可以直接拿来使用,大大缩短了程序开发周期.

  .....

5. 安装python 

系统环境:CentOS7.3

1
2
3
4
5
[root@python3 ~] # cat /etc/redhat-release   //查看当前系统环境.
CentOS Linux release 7.3.1611 (Core) 
[root@python3 ~] # python -V   //查看当前系统默认安装的python版本.
Python 2.7.5
[root@python3 ~] #

注: CentOS系统下的yum命令需要用到python 2.7.5版本,因此不能直接卸载该版本.

首先到官网下载Python3.6安装包:

可以下载到本地再上传到Linux系统,也可直接通过wget命令下载,此处选择第二种方法.

源码编译安装:

1
[root@python3 tool] # wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
1
2
3
4
5
6
7
8
9
10
[root@python3 tool] # yum -y install readline-devel  
  // 此软件包不装的话,安装完Python,在交互式解释器下操作方向键、退格键等会出现乱码.
[root@python3 tool] # tar zxf Python-3.6.0.tgz 
[root@python3 tool] # cd Python-3.6.0
[root@python3 Python-3.6.0] # ./configure --prefix=/usr/local/python3.6 
[root@python3 Python-3.6.0] # yum -y install zlib zlib-devel 
[root@python3 Python-3.6.0] # make && make install 
[root@python3 Python-3.6.0] # echo $?
0
[root@python3 Python-3.6.0] #

然后让系统自动使用python 3.6:

1
2
3
4
5
6
7
8
9
10
11
12
[root@python3 bin] # ll python*
lrwxrwxrwx. 1 root root    7 12月 15 04:32 python -> python2
lrwxrwxrwx. 1 root root    9 12月 15 04:32 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 11月  6 08:29 python2.7
[root@python3 bin] # mv  python{,.bak}  //将python文件改名
[root@python3 bin] # ll python*
lrwxrwxrwx. 1 root root    9 12月 15 04:32 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 11月  6 08:29 python2.7
lrwxrwxrwx. 1 root root    7 12月 15 04:32 python.bak -> python2
[root@python3 bin] # ln -sv /usr/local/python3.6/bin/python3.6 /usr/bin/python
"/usr/bin/python"  ->  "/usr/local/python3.6/bin/python3.6"    // 用最新的python3.6替换系统默认python
[root@python3 bin] #

编译安装之后在/usr/local/python3.6/bin下会自动生成一个python3的连接,他指向bin目录中的python3.6.

因为yum使用python2,因此替换为python3后无法正常工作,先通过设置使其继续使用python2.7.5

修改yum的配置文件:

1
2
3
4
5
6
7
[root@python3 ~] # ll /usr/bin/python*
lrwxrwxrwx. 1 root root   21 1月   3 15:31  /usr/bin/python  ->  /usr/local/python3 .6 /bin/python3 .6
lrwxrwxrwx. 1 root root    9 12月 15 04:32  /usr/bin/python2  -> python2.7
-rwxr-xr-x. 1 root root 7136 11月  6 08:29  /usr/bin/python2 .7
lrwxrwxrwx. 1 root root    7 12月 15 04:32  /usr/bin/python .bak -> python2
[root@python3 ~] # vim /usr/bin/yum 
  #!/usr/bin/python2.7    //把yum配置文件的头行的python改为python2.7.

此时查看系统默认的python版本:

1
2
3
4
5
[root@python3 ~] # python -V
Python 3.6.0
[root@python3 ~] # ll `which python`
lrwxrwxrwx. 1 root root 34 1月   3 15:42  /usr/bin/python  ->  /usr/local/python3 .6 /bin/python3 .6
[root@python3 ~] #

已然生效!

6. python代码的执行过程.

   说到python代码的执行过程,首先,说明下什么是解释型语言?其实python就是一种解释型编程语言当然还有一种语言估计听了也不会陌生---编译型语言!

   关于对解释型语言和编译型语言的理解:计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事[把高级语言转变成计算机能读懂的机器语言的过程]。这个过程分成两类:第一种是编译,第二种是解释。编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,即把程序转变成机器语言,这样程序运行时就不需要翻译,直接执行就可以了。最典型的例子就是C语言。而解释型语言就没有这个编译的过程,它是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby语言。

   通过以上描述,可以总结得出解释型语言和编译型语言的优缺点:因为编译型语言在程序运行之前就已经对程序做出了"翻译",所以在运行时就忽略掉了"翻译"的过程,所以效率比较高。但也有一些解释型语言可以通过解释器的优化,在对程序做出翻译时对整个程序做出优化,从而在效率上超过编译型语言。

  此外,因为Java等基于虚拟机的语言的存在,又不能把语言纯粹地分成解释型和编译型这两种。用Java来举例,Java首先是通过编译器将程序编译成字节码文件,然后在运行时通过解释器再解释成机器文件。所以说Java是一种先编译后解释的语言。

  说到这里,那python到底是什么?

  其实Python和Java一样,也是一门基于虚拟机的语言,当我们在命令行中输入"python hello.py"时,其实是激活了Python的"解释器",告诉"解释器":你要开始工作了。可是在"解释"之前,python执行的第一项工作和Java一样,是编译。熟悉Java的同学可以想一下如何在命令行执行一个Java的程序:

    javac hello.java

    Java hello

只是我们在用Eclipse之类的IDE时,将这两部给融合成为了一部分而已。其实Python也一样,当我们执行"python hello.py"时,python也同样执行了这么一个过程,所以我们对python的描述应该是这样的:Python是一门先编译后解释的语言。

   现在开始步入主题——python代码的执行过程:Python先把源代码(.py文件)编译成字节码(.pyc文件),然后交给字节码虚拟机,虚拟机一条一条执行字节码指令,将字节码翻译成对应的机器指令(机器码),从而完成程序的执行。 

  两个概念:Pycodeobject和pyc.我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果(code对象)。当python程序运行时,编译的结果则是保存在位于内存的PyCodeObject中,当Python程序运行结束时,Python解释器会将PyCodeObject写回到pyc文件中。当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到就直接载入,否则就重复上面的过程,这样的好处是,不重复编译,提高执行效率。所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。(大致理解python代码是怎么执行的即可).

7. python解释器

 1) CPython     

   当我们装完Python后,其默认的解释器就是CPython,也是官方默认的解释器。CPython是C语言写的,当执行代码时会将代码转化成字节码(ByteCode)。

 2) IPython

   基于CPython之上的一个交互式解释器,相当于默认解释器的一个增强版,最显著的功能就是自动补全,挺好用的。

 3) PyPy

   PyPy本身是由Python编写的,使用了JIT编译器(即时编译器)技术,当执行代码时JIT编译器将代码翻译成机器码。性能相比CPython要好。JAVA也采用了JIT编译器。

 4) Jython

   Jython是由JAVA编写的一个解释器,可以把JAVA模块加载到Python的模块中使用,也可以把Python代码打包成JAR包,意味着允许用Python写JAVA程序了。当执行代码时会将代码转化成JAVA字节码,然后使用JRE(Java Runtime Environment)执行。

 5) IronPython

   在.NET平台上工作的Python语言。

8.  Python编程风格.

  其实不光是Python,对于任何一种编程语言,形成良好的编程风格,能在后续代码的review和管理当中为自己及他人带来许多便利,节省宝贵的时间。

   1) 缩进统一

    Python以空白符作为语句缩进,意味着语句没有结尾符,给往往因为少写一个fi的人带来了福利,在Python中最好以4个空格作为缩进符,这也是大多数人的习惯!

  2) 代码注释

    这点尤为重要。据说优质的代码,注释说明要比代码量多,详细的代码注释不管对自己后期维护还是开源,都是有必要的。就像一个流行的软件,如果没有丰富的使用文档,你认为会有多少耐心的人去花大把的时间研究它呢!

  3) 空格使用

    在操作符两边,以及逗号后面,加1个空格。但是在括号左右不加空格。

    在函数、类、以及某些功能代码块,空出一行,来分隔它们。

  4) 命名

    模块:自己写的模块,文件名全部小写,长名字单词以下划线分隔。

    类:大/小驼峰命名。我一般采用大驼峰命名,也就是每个单词首字母大写。类中私有属性、私有方法,以双下划线作为前缀。

    函数:首单词小写,其余首字母大写。

    变量:都小写,单词以下划线分隔。

    提醒:所有的命名必须能简要说明此代码意义。

  5) 代码换行

   按照语法规则去换行,比如一个很长的表达式,可以在其中某个小表达式两边进行换行,而不是将小表达式拆分,这样更容易阅读。

  6)符号的含义

    "-"表示减号而不是横线

9. python数据类型.

  1) 字符串

   a.使用单引号(' '),即用单引号括起来表示字符串;

1
2
   >>>  str  =  'this is string'
   >>>  print ( str )

   b.使用双引号(" "),即用双引号括起来表示字符串;  

1
2
   >>>  str  =  "this is string"
   >>>  print ( str )

   c.三引号(""" """)

1
2
3
4
5
6
7
8
9
10
   >>>  str  =  """this is 
   ... string,
   ... xxx
   ... xxxx"""
   >>>  print ( str )
   this  is 
   string,
   xxx
   xxxx
   >>>

   注:单引号中的字符串与双引号中的字符串用法完全相同.

  2) 整数 

1
2
   >>>  int  =  20 
   >>>  print ( int )

  3) 浮点数

1
2
   >>>  float  =  2.3 
   >>>  print ( float )

  4) 布尔类型

1
2
3
4
   >>>  bool  =  False 
   >>>  print ( bool
   >>>  bool  =  True 
   >>>  print ( bool )

  5) 数字 

   包括整数和浮点数.

10.  运行第一个程序.

 a.在交互式解释器下运行:

1
2
3
4
5
6
7
[root@python3 ~] # python
Python 3.6.0 (default, Jan  3 2017, 15:07:51) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type  "help" "copyright" "credits"  or  "license"  for  more  information.
>>> print( "Hello World" )   
Hello World
>>>

b.写成脚本运行:

1
2
3
[root@python3 python] # vim hello.py
  #!/usr/bin/python 
  print( "Hello World" )
1
2
3
[root@python3 python] # python hello.py 
Hello World
[root@python3 python] #


以上内容,个别理论知识参考了别人的博客,地址如下:

http://blog.youkuaiyun.com/onlyanyz/article/details/45568479 

http://lizhenliang.blog.51cto.com/7876557/1851531


第一天完成!


本文转自 羽丰1995 51CTO博客,原文链接:http://blog.51cto.com/13683137989/1888684


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值