What
Python是一种面向对象的解释型计算机程序设计语言。1989年发明,
特点:
- 解释型
- 面向对象
- 简单易读
- 跨平台
开发准备
- 安装 python
- 配置环境变量
- 安装开发工具 pycharm
1
2
3brew install pyenv
brew install pyenv-virtualenv
brew cask install rabbitmq
python版本
- 显示可安装python版本
pyenv install -l
- 安装指定Python版本
pyenv install 3.7.2
- 卸载指定python版本
pyenv uninstall 3.7.2
- 显示已安装python版本 包括虚拟环境
pyenv versions
- 设置当前目录python版本
pyenv local 3.7.2
- 设置当前会话python版本
pyenv shell 3.7.2
- 重置版本设置
1
2pyenv shell --unset
pyenv local --unset
虚拟环境
- 创建某个Python版本的虚拟环境
pyenv virtualenv 3.7.2 wb-venv
- 激活和停用虚拟环境:
pyenv activate wb-venv
pyenv deactivate
- 列出当前所有的虚拟环境:
pyenv virtualenvs
- 删除虚拟环境:
pyenv virtualenv-delete wb-venv
数据基本类型
- 字符串(String)
- 数字型(Numbers)包括四种
- (整形(int)
- 长整形(L)
- 浮点型(float)
- 复数(j)
- 布尔
- 元组(Tuple) 定长、内容不可变、元素类型多样
- 列表(List) 队列结构、可变长度、元素的数据类型多样
- 字典(Dictionary) 键值对结构、key唯一,数据类型多样、valuey数据类型多样
命名规范
https://www.python.org/dev/peps/pep-0008/
命名类型 | 说明 | 例子 |
---|---|---|
模块名 | 小写字母,单词之间用_分割 | ad_stats.py (业务类型域_操作域_周期域) |
包名 | 小写字母,单词之间用_分割 | sys_user |
类名 | 驼峰 | AdStats、ConfigUtil |
全局变量名(类变量,在 java 中相当于 static 变量 | 大写字母,单词之间用_分割 | NUMBER、COLOR_WRITE |
普通变量 | 小写字母,单词之间用_分割 | this_is_a_var |
实例变量 | 以_开头,其他和普通变量一样 | _price、_instance_var |
私有实例变量(外部访问会报错) | 以__开头(2 个下划线),其他和普通变量一样 | __private_var |
专有变量 | __开头,__结尾,一般为 python 的自有变量,不要以这种方式 | __doc__ 、__class__ |
普通函数 | 小写字母,单词之间用_分割 | get_name()、count_number()、 ad_stat() |
私有函数(外部访问会报错) | 以__开头(2 个下划线),其他 | |
和普通函数一样 | __get_name() |
- 以双下划线开头的(__foo)代表类的私有成员;
- 以双下划线开头和结尾的(foo)代表python里特殊方法专用的标识,如__init__()代表类的构造函数。
- 变量名、包名、模块名 变量名通常由字母、数字、下划线组成,以字母或下划线开头,包名、模块名通常采用简短的小写字母,提高可读性模块名中也可以包含下划线,包命中不推荐使用下划线。
- 类名、对象名 类名首字母大写,其他字母采用小写。对象名用小写字母。内部使用的类在类名前加单下划线。
- 函数名 函数名通常采用小写,必要时使用下划线区分单词以提高可读性。
- 异常名 因为异常也是类,所以类的命名习惯在这里也适用。不同的是,如果异常实际上是个错误,则需要在异常名字的后面使用Error后缀
- 全局变量名 我们假设这些变量都是在模块内部使用的。命名所遵循的规则跟函数的命名规则基本相同。
Python之父Guido推荐的规范
编码
- 如无特殊情况, 文件一律使用 UTF-8 编码
- python2 如无特殊情况, 文件头部必须加入
#-*-coding:utf-8-*-
标识
语法
python 字符串拼接
- 普通拼接
“str ” + var
性能低 - 占位符有序传参
website = '%s%s%s' % ('python', 'tab', '.com')
- key-value传参 不考虑顺序
取子字符串
strr = "testsubstr"
- 取下标1的字符
strr[1]
- 取下标1开始到3结束 左闭右开
- 取下标0到2 左闭右开
strr[:2]
- 取下标2开始到结束
strr[2:]
dict字典转json数据
j = json.dumps(dict)
获取变量类型
type(varname)
迭代元祖
1
2for x in tup:
print "元素:"+ str(x)
Python Number 类型转换
表达式 | 说明 |
---|---|
int(x [,base ]) | 将 x 转换为一个整数 |
long(x [,base ]) | 将 x 转换为一个长整数 |
float(x ) | 将 x 转换到一个浮点数 |
complex(real [,imag ]) | 创建一个复数 |
str(x ) | 将对象 x 转换为字符串 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效 Python 表达式,并返回一个对象 |
tuple(s ) | 将序列 s 转换为一个元组 |
list(s ) | 将序列 s 转换为一个列表 |
chr(x ) | 将一个整数转换为一个字符 |
unichr(x ) | 将一个整数转换为 Unicode 字符 |
ord(x ) | 将一个字符转换为它的整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
Python 数学函数
表达式 | 说明 |
---|---|
abs(x) | |
ceil(x) | |
cmp(x, y) | 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 |
exp(x) | 返回e的x次幂 |
fabs(x) | float的绝对值 |
floor(x) | 返回下舍整数 |
log(x) | |
log10(x) | 10的x对数 |
max(x1, x2,...) | 返回给定参数的最大值,参数可以为序列。 |
min(x1, x2,...) | 返回给定参数的最小值,参数可以为序列。 |
modf(x) | 回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表 示。 |
pow(x, y) | x**y 运算后的值。 |
round(x[,n]) | 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数 |
sqrt(x) | 返回数字 x 的平方根 |
Python 随机数函数
表达式 | 说明 |
---|---|
choice(seq) | 从序列的元素中随机挑选一个元素,比如 random.choice(range(10)),从 0 到 9中随机挑选一个整数。 |
randrange ([start,] stop [,step]) | 从指定范围内,按指定基数递增的集合中获取一个随机数, 基数缺省值为 1 |
random() | 随机生成下一个实数,它在[0,1)范围内。 |
seed([x]) | 改变随机数生成器的种子 seed。如果你不了解其原理,你不必特别去设定 seed Python 会帮你选择 seed。 |
shuffle(lst) | 将序列的所有元素随机排序 |
uniform(x,y) | 随机生成下一个实数,它在[x,y]范围内。 |
函数式编程
变量作用域
1
global varname
方法体内使用 关键字global 可使用全局变量,否则使用的是局部变量
匿名函数
异常处理
1
2
3
4
5
6try:
正常的操作
except 异常名称, 数据:
发生以上多个异常中的一个,执行这块代码
else:
如果没有异常执行这块代码
-
finally
1
2
3
4
5
6try:
print list[1]
except(TypeError, IndexError), message:
print "异常来了", message
finally:
print "执行finally" -
自定义异常
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17class ParamException(RuntimeError):
def __init__(self, *args):
self.args = args
def check_params(age):
if (age < 15):
raise ParamException("年龄不能小于15")
def register(age):
try:
check_params(age)
except ParamException,error:
print error
文件操作
- 获取控制台内容 raw_input()函数
- access_mode:access_mode 决定了打开文件的模式
- 'r':读
- 'w':写
- 'a':追加
- 'r+' == r+w(可读可写,放在指针开头,文件若不存在就报错(IOError)
- 'w+' == w+r(可读可写,文件若不存在就创建)
- 'a+' ==a+r(可追加可写,文件若不存在就创建) 对应的,如果是二进制文件,就都加一个 b 就好啦: 'rb' 'wb' 'ab' 'rb+' 'wb+' 'ab+'
- 中文utf-8 一个字符3个字节,其它一个字节
判断空
- pandas df = df[(df['file_name'].isnull() | (df['file_name'] == ''))]
面向对象
- 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每 个对象所共有的属性和方法。对象是类的实例。
- 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
- 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
- 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
- 实例变量:定义在方法中的变量,只作用于当前实例的类。
- 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一 个 Dog 类型的对象派生自 Animal 类,这是模拟"是一个(is-a)"关系(例图,Dog 是一个 Animal)。
- 实例化:创建一个类的实例,类的具体对象。
- 方法:类中定义的函数。
- 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
- 多继承
- 同方法名,写后面的方法生效
Where
https://www.python.org/
参考
https://blog.csdn.net/youngbit007/article/details/61616241 https://www.cnblogs.com/lclq/p/5542902.html https://blog.csdn.net/warm77/article/details/78353632 https://blog.csdn.net/xun527/article/details/76180493
- 常用的相似度计算方法原理及实现
- https://blog.csdn.net/weixin_38225797/article/details/81021691
- https://blog.csdn.net/guojingjuan/article/details/50396254
- https://mp.weixin.qq.com/s/WsUAtZhhaYo5R-oXOubvjg