赋值语句、表达式语句、打印
## 赋值语句
> 赋值语句建立对象引用值
> 变量在首次赋值时会被创建
> 变量名引用前必须先赋值
## 赋值语句形式
### 元组和列表分解赋值运算
```python
[spam, ham] = ['yum', 'YUM']
spam, ham = 'yum', 'YUM'
a, b, c, d = 'spam'
(a, b), c = 'SP', 'AM'
```
### 扩展序列解包运算
```python
*a, b = 'spam' ==> a = 'spa', b = 'm'
a, *b = 'spam' ==> a = 's', b = 'pam'
a, *b, c = 'spam' ==> a = 's', b = 'pa', c = 'm'
```
### 多重赋值运算
```python
spam = ham= 'lunch'
```
### 增强赋值运算
![](http://om4h63cja.bkt.clouddn.com/17-3-8/1705066-file_1488945434959_6755.png)
## 变量命名规则
* 变量名可以使用数字字母下划线,变量名开头不能以数字开头
* 区分大小写
* 禁止使用保留字
* 常量一般使用大写字母表示, 如PIE
### python3 保留字
```
False class finally is return
None connitue for lambda try
True def from nolocal while
and del global not with
as elif if or yield
assert else import pass break
except in raise
```
### 命名惯例
* 以单一下划线开头的变量名 (\_x),不会被`from module import` \* 语句导入;
单个下划线是一个Python命名约定,表示这个名称是供内部使用的。 它通常不由Python解释器强制执行,**仅仅作为一种对程序员的提示**。
* 单末尾下划线 var_,用来避免与Python关键字产生命名冲突。
* 前后有下划线的变量名 (\_\_x\_\_),是系统定义的变量名,对解释器有特殊意义,比如__name__, \_\_doc__;
* 以两个下划线开头,两个下划线开头的变量名 (\_\_x)是类的**本地变量**;
双下划线前缀会导致Python解释器重写属性名称,以避免子类中的命名冲突。
重写格式:`_ClassName__method() _ClassName__var`
* 通过交互模式运行,单个下划线的变量名 (\_)会保存最后表达式的结果。
### 变量名没有类型,变量(对象)才有
```
x = 0 ,x是整型
x = 'hello',x变成字符型
```
## 引用计数器
对象的头部信息:类型标识符来标记对象类型,引用计数器用来决定是否可以回收。
### 增加对象引用计数的场景
* 对象创建时
* 对象被添加进容器时
* 对象被当作参数传递给函数
* 为对象创建另外的变量名
### 减少引用计数场景
* 引用对象的变量名被显式销毁:del x
* 从容器中移除对象和容器本身被销毁
* 给引用此对象的变量名重新赋值
- 前言
- 环境搭建
- pypi
- 打包
- Python 2 和 Python 3 的版本之间差别
- 项目
- 第一部分
- 第1章 基础
- Python安装
- python代码文件类型
- python对象
- 核心数据类型
- 核心数据类型--整型和浮点型
- 核心数据类型--字符串
- str.format
- 核心数据类型--列表
- 核心数据类型--元组
- 核心数据类型--字典
- 核心数据类型--集合
- 核心数据类型--文件对象
- 调用bash
- 标准输入输出
- str-repr
- 字符编码
- 迭代器和生成器
- 第2章 语句和语法
- 赋值语句
- if语句
- while语句
- for语句
- assert
- 第3章 函数
- 函数作用域
- 工厂函数
- 内置函数
- 递归
- 嵌套作用域和lambda
- 参数传递
- 函数式编程
- property可写与可读
- 第5章 模块
- 模块导入
- 模块命名空间
- 相对导入和绝对导入
- 模块重载
- 在模块中隐藏数据
- 过渡性重载
- 第6章 类
- 面向对象还是面向过程?
- 构造函数 析构函数
- call
- 运算符重载
- str()
- 待定
- 即时生成属性
- 多态
- 线程和进程
- thread模块
- threading模块
- threading线程锁
- 糖果机
- multiprocessing
- 阻塞非阻塞同步异步
- 单线程和多线程对比
- 生产者消费者模型
- 第二部分
- 获取系统资源信息
- 获取进程所占的物理内存
- dmidecode获取系统信息
- 网络编程
- 网络基础
- python中的套接字
- socket模块
- 第三部分 高级功能
- 闭包入门
- 闭包的应用
- 装饰器入门
- 装饰器应用
- 第四部分 项目实战
- graphite
- 模块
- collections
- datetime
- Enum
- faker
- fabric
- fileinput
- fire
- fnmatch
- getpass
- glob
- hashlib
- heapq
- json模块
- log
- os
- Paramiko
- parser
- platform
- pyyaml
- Queue
- random
- re
- 特殊符号和字符
- re模块
- shelves
- subprocess
- time
- urllib_urllib2_requests
- urllib urllib2
- requests
- 标准模块ConfigParser
- 扩展模块Mysqldb
- 扩展模块dns
- 扩展模块request
- uuid
- cacheout 缓存库
- delorean 时间
- 附录
- 内置函数
- python实现各种排序算法
- 常见报错
- pymongo
- pyrocksdb
- 常用
- ERROR