目录
1, 语句和表达式的区别
不同点:语句中包含关键字,表达式无关键字
相同点:语句和表达都可以有输出,也可没有输出
2, 输入和输出
2-1, 输入(input)
通过内建方法"input(提示信息)"获取用户输入,会截取末尾的换行符;若提供了"提示字符串",则显示该字符串
In [56]: input('请输入:')
请输入:
2-2, 输出(print)
通过内建方法"print(result)"输出结果, 默认给每一行添加一个换行符
In [57]: print('hello python')
hello python
3, 运算符
3-1, 算数运算符
支持的算数运算符:+、 -、 *、 /、 %(取余)、 **(乘方)
优先级:** > 单目运算符 > *、 /、 % > +、 -
3-2, 比较运算符
支持的比较运算符:>、 >=、<、 <=、 ==、 !=
3-3, 逻辑运算符
支持的逻辑运算符:and、 or、 not
优先级: not > and > or
3-4, 运算符之间的优先级
算数运算符 > 比较运算符 > 逻辑运算符
说明:适当的使用(),避免运算符的优先级问题导致的错误
4, 语句和语法
通过"井号(#)"表示注释符号, 从"#"开始,直到一行结束的内容都是注释
通过"换行(\n)"表示行分割符
通过"反斜杠(\)"表示继续上行
# \用于将一行语句分行书写
In [61]: if a==1 and \
...: b ==1:
...: pass
# 说明:使用闭合操作符([], {}, ())可以将一行分成多行;
# 使用三引号也可以将一行分成多行
# 推荐使用(),将一行分成多行
通过"分号(;)"可以将多个语句连接在一行, 缺点:不易读,不推荐使用
In [60]: a = b = 1
In [62]: print(a);print(b)
1
1
通过"冒号(:)"将代码块的头和体分开
说明:同一缩进程度的语句为同一层次关系,没有缩进的部分为代码主体;
5, 变量和赋值
5-1, 变量命名规范
变量名大小写敏感, 由字母、 _、 数字组成,且首字母不能为数字
5-2, 变量说明
不支持自增1和自减1, 如++1, --1
不需要预先声明变量类型,因为变量的类型和值在赋值的那一刻被初始化
赋值语句没有返回值
# 由于(y=1)没有返回值,所以报错
In [68]: x = (y=1)
File "<ipython-input-68-d2676719b49a>", line 1
x = (y=1)
^
SyntaxError: invalid syntax
5-3, 赋值
赋值不是将obj的值赋给变量,而是将obj的引用赋给变量
5-3-1, 复合运算赋值
支持通过复合操作符("变量A 运算符= 变量B")进行赋值,增量赋值的好处:对象仅被处理了一次
# 通过"变量A 运算符= 变量B"进行复合运算
# 这里的运算符支持算数运算符、位运算符
In [69]: a = 10
In [70]: a += 10
In [71]: a
Out[71]: 20
5-3-2, 多重赋值
通过变量"变量A = 变量B = 值"方式进行多重赋值
In [101]: x = y = 1
In [102]: x, y
Out[102]: (1, 1)
5-3-3, 多元赋值
用过"变量A, 变量B = 值A, 值B"方式进行多元赋值
In [1]: x, y = 1, 2
In [2]: x, y
Out[2]: (1, 2)
In [3]: x, y = y, x
In [4]: x,y
Out[4]: (2, 1)
5-4, 私有变量
类中带有__xxx的变量(变量名前有双下划线):为类的私有变量,不能从外部进行访问
__xxx__(变量前后):视为系统变量
6, 基本的风格指南
6-1, 文档字符串
介绍函数,方法,类,模块的功能, 通过obj.__doc__进行访问, 在编码时推荐写上文档字符串
In [109]: def func():
...: """this is my func"""
...: pass
...:
In [110]: func.__doc__
Out[110]: 'this is my func'
6-2, 模块的结构和布局
第一行:起始行
第二行:模块文档
第三行:模块导入
第四行:变量定义
第五行:类定义
第六行:函数定义
第七行:主函数
#! /usr/bin/env python
# -*- coding:utf-8 -*-
"""this is my module"""
import os
a = 1
class MyClass(object):
"""MyClass doc"""
pass
def my_func():
"""my_func doc"""
pass
# 如果该模块是被导入,则__name__等于模块的名字
# 如果该模块是被执行,则__name__等于__main__
if __name__ == '__main__':
my_func()
说明:py文件中,没有缩进的代码,不管是被导入,还是被执行,都会执行该层级代码
7, 内存管理
python的内存管理是通过解释器负责
通过引用计数(一个内部变量)表示变量被引用了多少次,引用计数由解释器跟踪
垃圾收集是指当一个变量的引用计数为0时, 会由垃圾收集器来释放内存,垃圾收集器是一块独立的代码