基础语法入门学习推荐: 简明 Python 教程
下文仅为入门推荐书籍的补充与重点
-
多行语句:末尾使用斜杠 ( \ ) ,将一行分为多行
var = item1 +
item2 +
item3 -
注释:
单行:#
多行:''' 内容 ''' """ 内容 """ (三个单引号或者三个双引号) -
空行:
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。 -
分号:
一般不用分号,如果单行需要写多个语句则需要。
-
缩进:
python非常注重缩进,2个空格或4个空格或1个Tab键。
一、变量
标志符
二、数据类型
- Number
- 字符串
- 列表 (list)
- 元组 (turple)
- 字典 (dictionnary)
可变数据类型
* 整型
* 浮点型
* 字符串型
* 元组
不可变数据类型
* 列表
* 字典
有关可变与不可变数据类型,如要了解详细内容,请点这里
类型转换:
chr(i) 把一个ASCII数值,变成字符
ord(i) 把一个字符或者unicode字符,变成ASCII数值
oct(x) 把整数x变成八进制表示的字符串
hex(x) 把整数x变成十六进制表示的字符串
str(obj) 得到obj的字符串描述
list(seq) 把一个sequence转换成一个list
tuple(seq) 把一个sequence转换成一个tuple
dict(),dict(list) 转换成一个dictionary
int(x) 转换成一个integer
long(x) 转换成一个long interger
float(x) 转换成一个浮点数
complex(x) 转换成复数
max(...) 求最大值
min(...) 求最小值
三、运算符 详解
- 算术运算符
- 比较(关系)运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
- 成员运算符
- 身份运算符
- 运算符优先级
四、条件语句
if 判断条件:
执行语句……
else:
执行语句……
五、循环语句
while 判断条件:
执行语句......
(迭代)
for iterating_var in sequence:
执行语句......
六、函数
-
形式:
def function( parameters ):
语句
return [expression] -
参数:
- 必备参数 (默认参数)
- 关键字参数 (调用函数时,参数位置为:形参=实参)
- 缺省参数 (定义函数时,形参已赋值)
- 不定长参数 ( *args: 除必备参数外其余参数全存在一个元组,**kwargs:除必备参数外其余键值形式的参数全存在一个字典中)
-
匿名函数:
变量 = lambda [arg1 [,arg2,.....argn]]: 表达式
-
return 语句:
返回多个参数时:return [arg1,arg2,...] 返回列表,元组,字典都行
-
函数内使用全局变量,需用global 声明已有全局变量。
七、对象
类(class)
-
属性
实例变量(每个实例内存中)
类变量(类内存中)
私有属性 __var -
方法
构造方法
析构函数(默认就有,代码为空,写了则相当于重构它) -
对象(object):类的实例(实例化一个类之后得到的对象)
-
三大特性:
- 封装
把一些功能的实现细节不对外暴露 - 继承
先覆盖、再继承、再添加
代码复用
单继承
多继承
- 2.7 经典类 深度优先
-- 新式类 广度优先
- 3.x 均广度优先 - 多态
接口重用(一种接口,多种实现)
- 封装
-
继承方式:
继承
组合
八、命名空间和作用域
命名空间
-
python中的几个命名空间:
1.全局命名空间: 包含函数、类以外的变量(全局变量)
2.局部命名空间:包含局部变量
3.内置(built-in)命名空间: 包含了内置的变量及关键字等 -
命名空间的生命周期:
1.局部命名空间:函数定义的命名空间:在函数调用时创建,函数结束或发生异常时销毁;类:在解释器从上到下读到类定义时创建,类定义结束后销毁。
2.全局命名空间:模块的全局命名空间在模块定义被解释器读入时创建,解释器退出时销毁
3.内置命名空间:在Python解释器启动时创建,解释器退出时销毁 -
变量查找顺序:(按照LEGB)
1.Local:首先搜索,包含局部名字的最内层(innermost)作用域,如函数/方法/类的内部局部作用域;
2.Enclosing:根据嵌套层次从内到外搜索,包含非局部(nonlocal)非全局(nonglobal)名字的任意封闭函数的作用域。如两个嵌套的函数,内层函数的作用域是局部作用域,外层函数作用域就是内层函数的 Enclosing作用域;
3.Global: 倒数第二次被搜索,包含当前模块全局名字的作用域;
4.Built-in:最后被搜索,包含内建名字的最外层作用域。
作用域
作用域是Python的一块文本区域,这个区域中,命名空间可以被“直接访问”。这里的直接访问指的是试图在命名空间中找到名字的绝对引用(非限定引用)。
直接引用;直接使用名字访问的方式,如name,这种方式尝试在名字空间中搜索名字name。
间接引用;使用形如objname.attrname的方式,即属性引用,这种方式不会在命名空间中搜索名字attrname,而是搜索名字objname,再访问其属性。
九、异常
一些特性:
十、模块
import moudle
from moudle import tool
包:
部分函数
系统相关的信息模块: import sys
sys.argv 是一个 list,包含所有的命令行参数.
sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输出的文件对象.
sys.stdin.readline() 从标准输入读一行 sys.stdout.write("a") 屏幕输出a
sys.exit(exit_code) 退出程序
sys.modules 是一个dictionary,表示系统中所有可用的module
sys.platform 得到运行的操作系统环境
sys.path 是一个list,指明所有查找module,package的路径.
操作系统相关的调用和操作: import os
os.environ 一个dictionary 包含环境变量的映射关系
os.environ["HOME"] 可以得到环境变量HOME的值
os.chdir(dir) 改变当前目录 os.chdir('d:\outlook')
注意windows下用到转义
os.getcwd() 得到当前目录
os.getegid() 得到有效组id os.getgid() 得到组id
os.getuid() 得到用户id os.geteuid() 得到有效用户id
os.setegid os.setegid() os.seteuid() os.setuid()
os.getgruops() 得到用户组名称列表
os.getlogin() 得到用户登录名称
os.getenv 得到环境变量
os.putenv 设置环境变量
os.umask 设置umask
os.system(cmd) 利用系统调用,运行cmd命令
内置模块(不用import就可以直接使用)常用内置函数:
help(obj) 在线帮助, obj可是任何类型
callable(obj) 查看一个obj是不是可以像函数一样调用
repr(obj) 得到obj的表示字符串,可以利用这个字符串eval重建该对象的一个拷贝
eval_r(str) 表示合法的python表达式,返回这个表达式
dir(obj) 查看obj的name space中可见的name
hasattr(obj,name) 查看一个obj的name space中是否有name
getattr(obj,name) 得到一个obj的name space中的一个name
setattr(obj,name,value) 为一个obj的name
space中的一个name指向vale这个object
delattr(obj,name) 从obj的name space中删除一个name
vars(obj) 返回一个object的name space。用dictionary表示
locals() 返回一个局部name space,用dictionary表示
globals() 返回一个全局name space,用dictionary表示
type(obj) 查看一个obj的类型
isinstance(obj,cls) 查看obj是不是cls的instance
issubclass(subcls,supcls) 查看subcls是不是supcls的子类
十一、文件
-
Python File(文件) 方法:
file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:
方法名 | 描述 |
---|---|
file.close() | 关闭文件。关闭后文件不能再进行读写操作。 |
file.flush() | 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。 |
file.fileno() | 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。 |
file.isatty() | 如果文件连接到一个终端设备返回 True,否则返回 False。 |
file.next() | 返回文件下一行。 |
file.read([size]) | 从文件读取指定的字节数,如果未给定或为负则读取所有。 |
file.readline([size]) | 读取整行,包括 "\n" 字符。 |
file.readlines([sizehint]) | 读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。 |
file.seek(offset[, whence]) | 设置文件当前位置 |
file.tell() | 返回文件当前位置。 |
file.truncate([szie]) | 截取文件,截取的字节通过size指定,默认为当前文件位置。 |
file.write(str) | 将字符串写入文件,没有返回值。 |
file.writelines(sequence) | 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。 |
2.Python OS 文件/目录方法:
详见这里
os 模块提供了非常丰富的方法用来处理文件和目录。