Python Tutorial笔记
Python Tutorial笔记
Python入门指南 中文版及官方英文链接:
- Python入门指南 (3.5.2)
http://www.pythondoc.com/pythontutorial3/ - Python Tutorial (3.5.2)
https://docs.python.org/3/tutorial/
2.使用Python解释器
- Control-D
文件结束符,让解释器以0状态码退出,相当于exit()命令。 - Control-P
命令行编辑功能。 - 为源文件指定不同的编码:
# -*- coding: encoding -*-
3.Python简介
- 交互模式中,最近一个表达式的值赋给变量
_。
在Python中:
- 字符串是序列类型,不可变。
- 列表是序列类型,可变。
4.深入Python流程控制
- 循环可以有一个else子句;它在循环迭代完整个列表(对于for)或执行条件为 false (对于while)时执行,但循环被 break 中止的情况下不会执行。
- break 语句,用于跳出最近的一级 for 或 while 循环。
- continue 语句,表示循环继续执行下一次迭代。
- docstring 文档字符串:函数体的第一行语句可以是可选的字符串文本。
- 全局变量不能在函数中直接赋值(除非用 global 语句命名)。
- Lambda表达式 创建一个匿名函数。
5.数据结构
- 列表对象方法:
list.append(x)
list.extend(L)
list.insert(i, x)
list.remove(x) # 删除链表中值为 *x* 的第一个元素。如果没有这样的元素,就会返回一个错误。
list.pop([i])
list.clear()
list.index(x)
list.count(x)
list.sort() # 对链表中的元素就地进行排序。与sorted(list)有区别。
list.reverse() # 就地倒排链表中的元素。
list.copy()
- 要实现队列,使用 collections.deque,它为在首尾两端快速插入和删除而设计。
- 列表推导式:
[expression for item in iterable if condition]
- 元组是序列,不可变。
- 集合(set)是一个无序不重复元素的集。
- 集合推导式:
{expression for expression in iterable}
- 字典推导式:
{key_expression: value_expression for expression in iterable}
- 字典方法:
dict.keys()
dict.values()
dict.items()
6.模块
- 模块的搜索路径(sys.path):当前目录;PYTHONPATH;安装目录。
- dir()函数:按模块名搜索模块定义,返回一个字符串类型的存储列表。
- 包:
from package import module
7.输入和输出
- repr()函数:将值转化为供解释器读取的形式。
- 字符串格式化方法:(1)str.format();(2)% 。
- 文件读写:
f = open(filename, mode)
# mode = "r", "w", "a", "r+", "rb"...
f.write(string)
f.tell # 返回文件对象在文件中的指针位置
f.seek(offset, from_what) # 移动指针
# from_what 值为 0 表示自文件起始处开始,1 表示自当前文件指针位置开始,2 表示自文件末尾开始
f.close()
- with语句处理文件对象,文件用完会自动关闭。
- json:
序列化:将Python 数据结构转换为字符串表示形式;
反序列化:从字符串表示形式重新构建数据结构。
import json
json.dump(x, fileobject)
x = json.load(fileobject)
8.错误和异常
- 异常处理:
try...except...[else]...[finally]
# else子句在未发生异常时执行。
# finally子句在任何情况都会执行。
- raise 语句允许程序员强制抛出一个指定的异常。
9.类
- 命名空间是从命名到对象的映射。
- 作用域 就是一个 Python 程序可以直接访问命名空间的正文区域。
- 如果没有使用global语法,其赋值操作总是在最里层的作用域(局部作用域)。global语句用以指明某个特定的变量为全局作用域,并重新绑定它。nonlocal 语句用以指明某个特定的变量为封闭作用域,并重新绑定它。
- 实例变量用于对每一个实例都是唯一的数据;类变量用于类的所有实例共享的属性和方法。
- 函数
isinstance()用于检查实例类型。 - 函数
issubclass()用于检查类继承。 - 迭代器:
iter() 函数返回一个定义了__next__()方法的迭代器对象。 - 生成器:
Generator是创建迭代器的简单而强大的工具。它们写起来就像是正规的函数,需要返回数据的时候使用 yield 语句。
10.Python标准库概览
- os 模块提供了很多与操作系统交互的函数。
import os
os.getcwd()
os.chdir('/server/accesslogs')
os.system('mkdir today')
- glob 模块提供了一个函数用于从目录通配符搜索中生成文件列表:
import glob
glob.glob('*.py')
- 命令行参数sys.argv。
- 正则表达式模式匹配:re模块。
- math 模块为浮点运算提供了对底层C函数库的访问。
- random 提供了生成随机数的工具。
- 用于处理从 urls 接收的数据的 urllib.request。
- 发送电子邮件的 smtplib。
- datetime 模块为日期和时间处理同时提供了简单和复杂的方法。
- 性能度量:timeit。
- 质量控制(测试):unittest 模块; doctest 模块。
11.标准库概览(2)
- 模板:string.Template类
>>> from string import Template
>>> t = Template('${village}folk send $$10 to $cause.') # $为占位符(模板子类还可指定自定义占位符)
>>> t.substitute(village='Nottingham', cause='the ditch fund')
'Nottinghamfolk send $10 to the ditch fund.'
- 十进制浮点数算法 decimal.Decimal,用于精确计算。
10.虚拟环境和包
- 用pyvenv创建虚拟环境:
pyvenv tutorial-env # 创建一个 virtualenv
source tutorial-env/bin/activate # 在 Unix 或者 MacOS 上激活虚拟环境
tutorial-env/Scripts/activate # Windows上激活虚拟环境
- pip常用指令:
pip install novas
pip install requests==2.6.0
pip install --upgrade requests
pip uninstall requests
pip show requests
pip list
pip freeze > requirements.txt # 生成一个类似需要安装的包的列表
pip install -r requirements.txt # 安装所有必须的包
13.接下来?
- Python 标准库
https://docs.python.org/3/library/ - Python 语言参考
https://docs.python.org/3/reference/
14. 交互式输入行编辑历史回溯
- 使用Tab补全
15.浮点数算法:争议和限制
- 0.1
即使打印的结果看上去是精确的1/10,真正存储的值是最近似的二进制小数。这是二进制浮点数的自然性质:它不是Python中的一个bug,也不是代码中的bug。
>>> .1 + .1 + .1 == .3
False
- 对于需要精确十进制表示的情况,可以尝试使用decimal模块,它实现的十进制运算适合会计方面的应用和高精度要求的应用。
- fractions 模块支持另外一种形式的运算,它实现的运算基于有理数。
Python Tutorial笔记的更多相关文章
- python机器学习笔记:EM算法
EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域的基础,比如隐式马尔科夫算法(HMM),LDA主题模型的变分推断算法等等.本文对于E ...
- Web Scraping with Python读书笔记及思考
Web Scraping with Python读书笔记 标签(空格分隔): web scraping ,python 做数据抓取一定一定要明确:抓取\解析数据不是目的,目的是对数据的利用 一般的数据 ...
- [Notes] Learn Python2.7 From Python Tutorial
I have planed to learn Python for many times. I have started to learn Python for many times . Howeve ...
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- VS2013中Python学习笔记[Django Web的第一个网页]
前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...
- python学习笔记之module && package
个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...
- emacs tutorial笔记
emacs tutorial笔记---基本控制 C-字母 表示一起按下Ctrl和字母/ 表示“或者”的意思 C - ctrlM - alt C-p C-b C-f C-n C-l 当前行放中央 ...
- python datetime笔记
python datetime笔记 http://mint-green.diandian.com/post/2011-09-09/4892024 获取当前时间,并通过字符串输出. 格式为:%Y-%m- ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
随机推荐
- [系统资源]port range
ip_local_port_range 端口范围 sysctl Linux中有限定端口的使用范围,如果我要为我的程序预留某些端口,那么我需要控制这个端口范围, 本文主要描述如何去修改端口范围. /pr ...
- Java8自定义条件让集合分组
/** * 将一个指定类型对象的集合按照自定义的一个操作分组: 每组对应一个List.最终返回结果类型是:List<List<T>> * * @param <T> ...
- ecshop中{$lang.}标签的修改
{$lang.}之类的文字都是在语言包里边定义的,所以要修改这些文字的话,我们只需要修改语言包里的文件.首先需要看一下你使用的语言是哪种,如果是中文的话,修改 languages/zh_cn/com ...
- 用户输入input函数和代码注释
一.读取用户输入 py3中input()读取用户输入,输出全部是默认str字符串数据类型,一般将其赋值变量,用户输入才继续往下走程序.(py2的不同已单独列出随笔) 二.注释 注释的作用:代码量大的时 ...
- python第十一周:RabbitMQ、Redis
Rabbit Mq消息队列 RabbitMQ能为你做些什么? 消息系统允许软件.应用相互连接和扩展.这些应用可以相互链接起来组成一个更大的应用,或者将用户设备和数据进行连接.消息系统通过将消息的发送和 ...
- 洛谷 P1129 BZOJ 1059 cogs 660 [ZJOI2007]矩阵游戏
题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作: 行交 ...
- mysql explain介绍
mysql环境优化: 1.如果order by 没有利用到索引,那么将会出现fileSort,如果sort_buffer不够大,fileSort过程则需要使用临时文件 ,fileSort优化,主要通过 ...
- 0809MySQL-InnoDB Compact 行记录格式
InnoDB存储引擎提供了compact(5.1后的默认格式)和redundant两个格式来存放行记录数据.redundant格式是为了兼容之前的版本而保留. mysql> show table ...
- Django(七)
一.ModelForm操作及验证 1.class Meta:class Meta: #注意以下字段不能加逗号 model = models.UserInfo #这里的all代指所用的字段,也可以是一个 ...
- Maven错误:XXX时出错; invalid LOC header (bad signature)的解决方法
错误原因是该包没下载成功,比如网络问题等因素. 解决方法:进入本地仓库删除该包,然后再执行打包或部署等操作即可.