python简介
2018-04-01 09:12 cnblogs_qm 阅读(263) 评论(0) 编辑 收藏 举报简介
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 | |
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]
"函数_文档字符串"
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
'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 张思维导图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步