Python快速入门篇(一)

1.Python 简介

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

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

  • Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
  • Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
  • Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
  • Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

补充说明

面向过程:以指令为中心,由指令处理数据;如何组织代码解码问题

面向对象:以数据为中心,所有的处理代码都围绕数据展开:如何设计数据结构组织数据,并提供对此类数据所允许处理操作

1.1Python 特点

  • 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++程序,让你的程序的用户获得”脚本化”的能力。

2.python的实现

要想实现Python编程,一般我们需要一个解释器,像shell一样利用bash一样调用各种外部命令就能完成程序运行;而python本身为了运行起来,它也需要一个解释器,类似于bash一样,其实现方式主流的有以下三种

  1. Cpython:最原始,最标准的实现方式,我们平时用的也都是使用C语言所开发的,所有叫Cpython
  2. Jpython:用于与Java语言集成实现
  3. Ironpython:用于与.NET框架集成的实现

2.1python性能优化工具

  1. Psyco:python语言的一个扩展模块,可以理解为python的一个插件,可以及时对程序代码进行专业的算法优化,可以在一定程度上提高程序的执行速度,尤其是在有大量的循环操作时;目前项目已经停止,现在有PyPy接待
  2. PyPy:PyPy是用python实现的解释器;python的动态编译器,是Psyco的后续项目;可以运行在Linux32或64,MacOS或Windows32,64
  3. Shed Skin:python编译器,可以将python代码转换成C++代码

3.编写执行python代码

  • 交互式解释器

直接启动python,其显示信息取决于程序版本及操作系统等

[root@linux-node1 ~]# python
Python 2.7.5 (default, Nov 20 2015, 02:00:19) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "Hello World"
Hello World
>>>
  • python程序文件
  1. 交互式模式下执行完成后难于再次执行
  2. 将编写的程序保存至.py文件中便于多次执行
    .python的此类包含了一系列预编写好的语句的程序文件称为”模块”
    .能够直接运行的程序模块文件通常称为脚本(即程序的顶层文件)

3.1Python程序文件

  • Python程序文件通常以.py为扩展名

例如新建一个名为firstcode.py的文件,内容如下所示

[root@linux-node1 ~]# vim firstcode.py
#!/usr/bin/python
import platform            ##import用来导入一个模块
print platform.uname()     ##print用于程序输出
第一行为shebang,即执行脚本时通知内容要启动的解释器
第二行通过import导入一个python模块platform
第三行打印platform模块的uname方法的执行结果
  • 给予次脚本以执行权限,并执行即可
[root@linux-node1 ~]# chmod +x firstcode.py
[root@linux-node1 ~]# ./firstcode.py 
('Linux', 'linux-node1.example.com', '3.10.0-327.el7.x86_64', '#1 SMP Thu Nov 19 22:10:57 UTC 2015', 'x86_64', 'x86_64')

python程序可以分解成模块、语句、表达式和对象

  • 程序由模块构成
  • 模块包含语句
  • 语句包含表达式
  • 表达式建立并处理对象
    表达式是‘某事’,而语句是‘做某事(即指令)’
  • 例如,“3+4”是某事,而“print 3+4”则是做某事;
  • 语句的特性:它们改变了事物,例如,赋值语句改变了变量,print语句改变了屏幕输出等;

3.2Python IDE

  • IDLE:标准Python环境提供
  • Eclipse和PyDev
  • Python Win
  • Komodo
  • Wingware
  • PyCharm

3.3获取Python模块platform内置函数

>>> import platform
>>> dir(platform)
['DEV_NULL', '__builtins__', '__copyright__', '__doc__', '__file__', '__name__', '__package__', '__version__', '_abspath', '_architecture_split', '_bcd2str', '_default_architecture', '_dist_try_harder', '_follow_symlinks', '_ironpython_sys_version_parser', '_java_getprop', '_libc_search', '_lsb_release_version', '_mac_ver_gestalt', '_mac_ver_lookup', '_mac_ver_xml', '_node', '_norm_version', '_parse_release_file', '_platform', '_platform_cache', '_popen', '_pypy_sys_version_parser', '_release_filename', '_release_version', '_supported_dists', '_sys_version', '_sys_version_cache', '_sys_version_parser', '_syscmd_file', '_syscmd_uname', '_syscmd_ver', '_uname_cache', '_ver_output', '_win32_getvalue', 'architecture', 'dist', 'java_ver', 'libc_ver', 'linux_distribution', 'mac_ver', 'machine', 'node', 'os', 'platform', 'popen', 'processor', 'python_branch', 'python_build', 'python_compiler', 'python_implementation', 'python_revision', 'python_version', 'python_version_tuple', 're', 'release', 'string', 'sys', 'system', 'system_alias', 'uname', 'version', 'win32_ver']
>>>

3.4编译安装Python

因为内置python有许多依赖包,想要升级Python,只能另外安装

##下载Python
wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
##解压
tar xf Python-2.7.6.tgz
cd Python-2.7.6/
##安装特定的依赖开发程序(gcc为编译器)
yum install -y readline-devel gcc
./configure --prefix=/usr/local/python27  ##指定独立目录去引用
make && make install
ln -s /usr/local/python27/bin/ /usr/bin
##下载ipython工具具有补全功能
wget https://files.pythonhosted.org/packages/42/a0/204ecd8b4e76f3399b51addbd39980ec5fa90275ff853879e25508030922/ipython-1.2.1.tar.gz
tar xf ipython-1.2.1.tar.gz
cd ipython-1.2.1/
python2 setup.py build  ##使用python2.7的解释器进行编译
python2 setup.py install
[root@linux-node1 bin]# ipython 
Python 2.7.5 (default, Nov 20 2015, 02:00:19) 
Type "copyright", "credits" or "license" for more information.

IPython 1.2.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.

In [1]: import platform

In [2]: print platform.uname
platform.uname

In [2]: print platform.uname()
('Linux', 'linux-node1.example.com', '3.10.0-327.el7.x86_64', '#1 SMP Thu Nov 19 22:10:57 UTC 2015', 'x86_64', 'x86_64')

In [3]:

3.5数据结构

要想对Python程序设计,需要了解的第一个话题就是数据结构

  • 数据结构

1.通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其它的数据结构
2.Python的最基本数据结构是序列
3.序列中的每个元素被分配一个序号–即元素的位置,也称为索引;索引从0开始编号
4.Python包含6种内建的数据序列:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象

3.6Python关键要素

基本数据类型

任何程序语言都是必须能够表示基本数据项
Python中的基本数据类型有
Integral类型
整型:不可变类型
布尔型:True,False
浮点类型
浮点数:3.1415926
复数:3+6j
十进制数字
字符串:“GUN is Not Unix”,“hello”,“world”

对象引用(变量)

Python将所有数据存为内存对象
Python中,变量事实上是指向内存对象的引用
动态类型:在任何时刻,只要需要,某个对象引用都可以重新引用一个不同的对象(可以是不同的数据类型)
内建函数type()用于返回给定数据项的数据类型
“=”用于将变量名与内存中的某对象绑定:如果对象事先存在,就直接进行绑定;否则,则由”=”创建引用的对象

In [3]: a="xionghaizi"

In [4]: type(a)
Out[4]: str

In [5]: a=3.14

In [6]: type(a)
Out[6]: float

组合数据类型

列表是可变对象,元组是不可变序列
Python中,组合数据类型也是对象,因此其可以嵌套
[‘hello’,’world’,[1,2,3]]
实质上,列表和元组并不真正存储数据,而是存放对象引用
Python对象可以具有其可以被调用的特定”方法(函数)”
元组、列表以及字符串等数据类型是”有大小的”,也即,其长度可以使用内置函数len()测量;

In [8]: myLinst=['one','two']
In [10]: len(myLinst)
Out[10]: 2
In [12]: print myLinst
['one', 'two']

逻辑操作符

逻辑运算时任何程序设计语言的基本功能
Python提供了4组逻辑运算

  • 身份操作符

is:判定左端对象引用是否相同于右端对象引用;也可以与None进行;

  • 比较操作符

<,>,<=,>=,!=,==

  • 成员操作符

in或not in:测试成员关系

  • 逻辑运算符

and,or,not

In [1]: name="Jerry"
In [2]: test="Jerry"
In [3]: name is test
Out[3]: True
In [6]: type(name) is type(test)
Out[6]: True

控制流语句

控制流语句是过程式编程语言的基本控制机制
Python的通常控制流语句:if,while,for…in,try

算术操作符

Python提供了完整的算术操作集
很多的Python数据类型也可以使用增强的赋值操作符,如+=,-=等
同样的功能,使用增强型赋值操作符的性能较好
Python的int类型是不可变的,因此,增强型赋值的实际过程是创建了一个新的对象来存储结果后将变量名执行了重新绑定

输入/输出

现实中,具有实际功能的程序必须能够读取输入(如从键盘或文件中),以及产生输出,并写到终端或文件中
Python的输入/输出
输出:Python3:print()函数   Python2:print语句
输入:input()    raw_input()

函数创建和引用

函数是实现模块化编程的基本组件
Python使用def语句定义函数
函数可以参数化,通过传递不同的参数来调用
每个Python函数都有一个返回值,默认为None,也可以使用”return value”明确定义返回值
def语句会创建一个函数对象,并同时创建一个指向函数的对象引用
函数也是对象,可以存储在组合数据类型中,也可以作为参数传递给其它函数
callable()可用于测试函数是否可调用

3.7Python编程基础及编程风格

1.Python的语句和语法

注释
 --->#:可以从一行的任何地方开始
续行
 \:
 ''':闭合操作符,单一语句跨多行
代码组
 缩进相同的一组语句构成的一个代码块
 首行以关键字开始,如if,while等,以冒号结束
 Python使用缩进来分隔代码组,同一代码组的代码行必须严格左对齐,否则会造成语法错误
同一行放置多个语句
 ;:以分号作为分隔符
模块
 每一个Python脚本文件都可以被当成是一个模块
 模块里的代码可以是一段直接执行的脚本,也可以是一些类似库函数的代码从而可由别的模块执行导入(import)

[root@linux-node1 ~]# vim a.py
#!/usr/local/python27/bin/python2.7
#
name = "Jerry"

def printName(a):
    print a

num = 3
print num
printName(name)   ###进行函数调用,把name这个变量传给a

2.Python的标识符

标识符是计算机语言中允许作为名字的有效字符串集合
 -->其中有一部分是关键字,它们是语言的标识符,因此是保留字,不能用于其它用途
 -->Python还有称为"内建"的标识符集合,虽不是保留字,仍不推荐使用这些特别的名字
Python标识符
 -->第一个字符只能使用字母或下划线
 -->余下的字符可以使用字母、数字或下划线
 -->区分字符大小写
注释
 -->即不能缺少注释,亦要避免过渡注释
文档
 -->Python允许通过__doc__动态获得文档子串
缩进
 -->统一缩进4个子串
标识符名称
 -->见名知义
Python风格指南
 -->https://code.google.com/p/soc/wiki/PythonStyleGuide
 -->译文:http://www.elias.cn/Python/PythonStyleGuide

3.Pythian的基本编程风格

所有文件都保持一致风格时程序要容易维护得多,以下是 Melange 项目的标准 Python 编码风格规范:

  1. 分号: 避免使用
  2. 每行长度: 最多80列
  3. 圆括号: 吝啬地用
  4. 缩进: 4 空格(不要用 tab ),和PEP8有所区别
  5. 空行: 对函数和类用 2 个空行分隔,对类的方法用 1 个空行
  6. 空格: 在行内吝啬地使用
  7. Python 解释器: 用Google App Engine支持的那个: #!/usr/bin/python2.5
  8. 注释: __doc__ strings、块注释、行内注释
  9. : 继承 object
  10. 字符串: 避免重复使用 + 和 +=
  11. TODO style: TODO(username): 使用一种一致的风格
  12. import 分组、排序和整理: 一行一个,按包名字分组顺序放置,按字母顺序排序
  13. 语句: 一行一个,避免使用分号
  14. 访问控制: 轻量化风格可以用 foo,否则用 GetFoo() 和 SetFoo()
  15. 命名: 用 foo_bar.py 而不是 foo-bar.py,和PEP8有些区别
  16. 程序入口: if __name__ == ‘__main__’:
  17. 总结: 看看你周围是什么

 

0
如无特殊说明,文章均为本站原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!