1.1 Python入门
Python简介
-
什么是Python Python是一门跨平台、开源、免费的的解释型高级动态编程语言。
胶水语言、命令式、函数式、支持面向对象程序设计、有大量扩展库。 -
重要网站
- Python开发环境 IDLE、Eclipse+PyDev、PyCharm、IPython、PythonWin、Anaconda3、zwPython
Python的安装和简单使用
- 下载python源码包并解压
view plain copy cd ~ wget http://192.168.1.100:60000/allfiles/python_tools/Python-3.6.4.tgz tar -zxf Python-3.6.4.tgz
- 下载zlib1g-dev依赖包并安装
view plain copy wget http://192.168.1.100:60000/allfiles/python_tools/zlib1g-dev_1.2.8.dfsg-2ubuntu4.1_amd64.deb sudo dpkg -i zlib1g-dev_1.2.8.dfsg-2ubuntu4.1_amd64.deb
- 下载zlibc依赖包并安装
view plain copy wget http://192.168.1.100:60000/allfiles/python_tools/zlibc_0.9k-4.1_amd64.deb sudo dpkg -i zlibc_0.9k-4.1_amd64.deb
- 创建python存放目录
view plain copy sudo mkdir /usr/local/python3
- 配置
view plain copy cd Python-3.6.4 ./configure --prefix=/usr/local/python3
- 编译
view plain copy sudo make
- 安装
view plain copy sudo make install
- 测试解释器
view plain copy /usr/local/python3/bin/python3
Python代码规范
- 缩进:类定义、函数定义、选择结构、循环结构,行尾的冒号表示缩进的开始,4个空格为基本缩进单位
- 注释:
#
、"""..."""
、'''...'''
- 每个import语句只导入一个模块
- 如果一行语句太长,可以在行尾加上续行符
\
来换行分成多行,但是更建议使用括号来包含多行内容 - 必要的空格和换行:
运算符两侧,逗号后面建议加一个空格
不通过功能的代码块之间、不同函数定义之间建议增加一个空行以增加可读性 - 适当使用异常处理结构进行容错
- 软件应具有较强的可测试性,测试与开发齐头并进
Python文件后缀名
.py
:Python源文件,由Python解释器负责解释执行.pyw
:Python源文件,常用于图形界面程序文件.pyc
:Python字节码文件,可用于隐藏Python源代码和提高运行速度
Python脚本的”name“属性
- 每个Python脚本在运行时都有一个
__name__
属性
如果脚本作为模块被导入,则其属性值被自动设置为模块名
如果脚本独立运行,则其属性值被自动设置为__main__
- 利用
__name__
属性可控制Python程序的运行方式
例如:编写一个包含大量可被其他程序利用的函数模块,而不希望改模块直接运行,可以在程序中添加if __name__ == '__main__': print('Please use me as a module')
1.2 变量和数据类型
Python变量
- Java和C中的变量是内存中分配的一个区域,用于存储特定类型的数据,Python中的变量只是一个变量名,不分配内存区域,也没有指定类型,赋值时,只是将变量名指向了目标对象
- 不需要事先声明变量名及其类型
- 强类型编程语言、动态类型语言
- Python采用的是基于值的内存管理方式,如果为不同变量赋值为相同值,这个值在内存中只有一份,多个变量指向同一块内存地址
- Python中的变量并不直接存储值,而是存储值的内存地址或者引用,这也是说变量类型可以随时改变的原因
- Python具有自动内存管理功能,对于没有任何变量指向的值,Python自动将其删除
- 可以使用
del
命令显式删除不需要的值或不再需要访问的资源
Python在线编辑器
变量命名规则
- 必须以字母或下划线开头
- 变量名中不能有空格及标点符号
- 大小写敏感
- 不建议采用系统模块、类型、函数名命名
- 不能使用关键字
import keyword print(keyword.kelist)
基本数据类型
- 数字
整数int:十进制、十六进制0x、八进制0o、二进制0b
浮点数float
布尔值boolean
复数complexa=3+4j a.real #查看复数实部 a.imag #查看复数虚部 a.conjugate #返回共轭复数
-
字符串
input()函数返回的结果是字符串
- 列表
- 元组
- 集合
- 字典
Python迭代器和生成器
Python生成器
- 在Python中,一边循环一边计算的机制,称为生成器:generator
- 生成器推导式的结果是一个生成器对象。使用生成器对象的元素时,可以根据需要将其转化为列表或元组,也可以使用生成器对象
__next__()
方法或内置函数next()
进行遍历,或直接将其作为迭代器对象来使用 - 使用
for
循环直接迭代生成器对象中的元素 - 生成器对象具有惰性求值的特点,节约资源
- 不管用哪种方法访问生成器对象,都无法再次访问已访问过的元素
- 在运行中产生值,且不会被保存,生成器不能重复使用,只能再定义一个生成器
- 生成器是一种特殊的迭代器,可“凭空造数据”
- 生成器不支持索引和切片操作
- 在 Python 中,使用了 yield 的函数被称为生成器(generator),生成器是一个返回迭代器的函数,只能用于迭代操作。
迭代
- 如果给定一个list或tuple,我们可以通过for循环来遍历,这种遍历我们称为迭代(Iteration),在Python中,迭代是通过
for...in
来完成的 - 只要是可迭代对象,无论有无下标都可以迭代
比如dict就可以迭代:默认情况下迭代key
迭代value:for value in d.values()
迭代key和value:for k,v in d.items()
- 判断一个对象是否可以迭代
from collection import Iterable isinstance('abc',Iterable) # str是否可以迭代
迭代器
- 可直接作用于for循环的数据类型
集合数据类型,如list,tuple,dict,set,str
generator,包括生成器和带yield的generator function - yield的作用就是把一个函数变成一个generator,带有yield的函数不再是一个普通函数,Python解释器会将其视为一个generator
- 生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值
- 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
- 可直接作用于for循环的对象统称为可迭代对象:Iterable
- 生成器都是Iterator对象,list,dict,str等是Iterable不是Iterator
- 把Iterable变成Iterator可使用
iter()
函数 - Python的for循环本质上就是通过不断调用next()函数实现的