python简介

 
 

简介
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。
  • 解释型:
  • 面向对象:
  • 动态数据类型:
 
注意
采用缩进,而不适用大括号“{}”来控制类、函数及其它逻辑判断。
一般以新行作为语句结束符,但可以使用斜杠()将一行语句分为多行显示,另外如果语句中包含[]、{}或()括号,就不需要使用多行连接符。
同一行可显示多条语句,语句之间使用分号(;)分隔。
 
协议
GPL(GNU General Public License)
 
版本
Python2.x 与 Python3.x 区别
  • 默认编码格式:2.x默认使用 ASCII ;3.x默认使用UTF-8
  • 命令行输出:2.x使用print语句;3.x使用print()函数
  • 除法函数:
  • 异常:捕获异常的语法,2.x使用except exc, var;3.x使用except exc as var
  • xrange():3.x不再支持
  • 八进制字面量表示:3.x不再支持01000(实际是0o1000)的写法
  • 不等运算符:2.x支持“!=”和“<>”两种写法;3.x仅支持“!=”
  • repr表达式(反引号):3.x不再支持
  • 多个模块被改名(根据PEP8):
  • 数据类型:3.x去除了long类型,新增了bytes类型
  • 接收键盘录入:2.x支持input()和raw_input();3.x仅支持input()(整合了raw_input())。
  • 打开文件:2.x支持file()和open();3.x仅支持open()
  • map、filter、reduce:
 
特点
  • 易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
  • 易于阅读:Python代码定义的更清晰。
  • 易于维护:Python的成功在于它的源代码是相当容易维护的。
  • 一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
  • 互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
  • 可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
  • 可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
  • 数据库:Python提供所有主要的商业数据库的接口。
  • GUI编程:Python支持GUI可以创建和移植到许多系统调用。
  • 可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
 

运行
交互式解析器
不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码。
 
命令行脚本
通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕。当脚本执行完成后,解释器不再有效。
 
IDE(PyCharm)
 

标识符
  • 由字母、数字、下划线组成,但不能以数字开头
  • 区分大小写的
 
特殊标识符
  • 以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入;
  • 以双下划线开头的 __foo 代表类的私有成员;
  • 以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。
 
保留字
and exec not
assert finally or
break for pass
class from print
continue global raise
def if return
del import try
elif in while
else is with
except lambda yield
 
注释
  • 单行注释:用井号(#)
  • 多行注释:用三引号(''')
 

数据类型
标准的数据类型
Numbers(数字):int、long、float、complex
String(字符串):由数字、字母、下划线组成
List(列表):用中括号“[]”标识,可包含数字、字符码、列表
Tuple(元组):用圆括号“()”标识。
Dictionary(字典):用大括号“{}”标识,由key和value组成。
 
注意
元组类似列表,但是元组不能二次赋值,相当于只读列表。
列表是有序的对象集合,字典是无序的对象集合。
 

运算符
算数运算符:
关系运算符:
赋值运算符:
逻辑运算符:
位运算符:
成员运算符:
身份运算符:
 
运算符优先级
 

条件语句
 
语法
 
 

异常
语法
 
 
try:
<statements>  #运行的代码
except(Excepion1[, Exception2[, ...ExceptionN]]):
<statements>  #如果在try部分引发了'name'异常
except <name>,<data>:
<statements>  #如果在try部分引发了'name'异常,获得附加的数据
else:
<statements>  #如果没有发生异常
 
try:
<statements>
finally:
<statements>
 
# 触发异常
raise
 
 

函数
语法
def functionname( parameters ):
   "函数_文档字符串"
   function_suite
   return [expression]
 
规则
  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
 
 
匿名函数
语法
lambda [arg1 [,arg2,.....argn]]:expression
规则
  • lambda只是一个表达式,函数体比def简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
 
变量
访问权限决定于这个变量是在哪里赋值。
 

模块
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
 
包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。
简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__int__.py用于标识当前文件夹是一个包。
 
import
功能:引入模块
语法:
import module1[, module2[,... moduleN]
 
from import
功能:从模块中导入一个指定的部分到当前命名空间中
语法:
from modname import name1[, name2[, ... nameN]]
 
搜索路径
当前目录 -> PYTHONPATH -> 默认路径(/usr/local/lib/python/ )
注:模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
 

定义
class ClassName:
   '类的帮助信息'   #类文档字符串
   class_suite  #类体
注意
  • VS普通方法,存在额外参数self:必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
  • VS其它语言,没有new关键字:类的实例化类似函数调用方式。
 
self
代表类的实例,self 在定义类的方法时必须有,在调用时不必传入。
 
继承
语法
class SubClassName (ParentClass1[, ParentClass2, ...]):
   'Optional class documentation string'
   class_suite
特点
  • 多重继承:
  • 在继承中基类的构造(__init__())方法不会被自动调用,它需要在其派生类的构造中亲自专门调用。
  • 在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。
  • 首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。
 
重载
方法重载
运算符重载
 
PS
单下划线、双下划线、头尾双下划线说明
  • _foo:以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
  • __foo:双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。
  • __foo__:定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的。
注:Python不允许实例化的类访问私有数据,但你可以使用 object._className__attrName 访问属性
 
 

垃圾回收
Python 的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器
引用计数器:当对象被创建时, 就创建了一个引用计数, 当这个对象不再需要时, 也就是说, 这个对象的引用计数变为0 时, 它被垃圾回收。但是回收不是"立即"的, 由解释器在适当的时机,将垃圾对象占用的内存空间回收。
垃圾收集器:会留心被分配的总量很大(及未通过引用计数销毁的那些)的对象。 在这种情况下, 解释器会暂停下来, 试图清理所有未引用的循环。
 

参考资料
官网
 
Python IDE
 
Python 入门指南
 
Python 编码规范(Google)
 
一文总结学习 Python 的 14 张思维导图
原文地址:https://www.cnblogs.com/cnblogs-qm/p/8685659.html