class 实例的方法,第一个参数自动转换为实例的索引
第一个参数不一定非要是self
类方法
直接使用Class.method(instance),参数需要显式的传递实例对象
python 对重载运算符
什么是运算符重载 让自定义的类生成的对象(实例)能够使用运算符进行操作 作用: 让自定义的实例像内建对象一样进行运算符操作 让程序简洁易读 对自定义对象将运算符赋予新的规则
算术运算符的重载
方法名 运算符和表达式 说明
1 | __add__(self,rhs) self + rhs 加法 |
示例
1 | class Mynumber: |
反向运算符的重载
当运算符的左侧为内建类型时,右侧为自定义类型进行算术匀算符运算时会出现 TypeError 错误,因为无法修改内建类型的代码 实现运算符重载,此时需要使用反向运算符的重载
方法名 运算符和表达式 说明
1 | **radd**(self,lhs) lhs + self 加法 |
比较算术运算符的重载
方法名 运算符和表达式 说明
1 | __lt__(self,rhs) self < rhs 小于 |
位运算符重载
方法名 运算符和表达式 说明
1 | __and__(self,rhs) self & rhs 位与 |
其他运算符重载
in/not in 运算符重载 注: in / not in 返回布尔值 True / False 当重载了__contains__后,in 和 not in 运算符都可用 not in 运算符的返回值与 in 相反
1 | __contains__(self,e): |
父类构造器
python不会自动调用父类构造器,需要显式的调用
1 | class SongBird(Bird): |
class 属性
定义在class方法外的属性,method本身也属于class属性
断言
断言自定义提示信息
1 | assert x >= 0, 'x is less than zero' |
更新PIP
python -m pip install -U pip
XML解析
1 | import xml.etree.ElementTree as ET |
调用其他 py 文件方法
1 | import other |
动态调用方法
在py文件中,可以使用
1 | def func(arg1,arg2): |
调用class方法,可以使用
1 | class Data: |
字符串格式化
python可以使用''' str ''',来进行纯字符串赋值,而不需要考虑转译字符。 python字符串可定义占位符,通过format函数进行格式化
1 | print('{}1{}'.format(0,3)) |
json格式化输出
1 | import json |
常用函数
zip将多个数组打包成元组
1 | a = [1,2,3] |
list转换为数组
很多常用函数函数的不是直接的数组,比如map,filter等,需要在使用list直接转换为数组
enumerate函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标
1 | enumerate(sequence, [start=0]) |
返回多个值
1 | def multi(): |
实际上 python 返回的是一个tulpe,在语法上,返回一个 tuple 可以省略括号,而多个变量可以同时接收一个 tuple,按位置赋给对应的值,所以,Python 的函数返回多值其实就是返回一个 tuple,但写起来更方便.
获取方法文档注释
1 | my_func.__doc__ |
获取python版本
1 | import sys |
枚举
python3.4版本支持
1 | from enum import Enum |
获取所有方法
1 | print([func for func in dir(Func) if callable(getattr(Func,func))]) |
打印方法的所有参数
1 | import inspect |
参数
可变参数
- 当我们声明一个星号的参数,如
*param,那么从这一点开始到结束的所有位置的参数都被收集到一个叫param的元组中。 - 同样,当我们声明一个双星参数,如
**param,那么从那一点开始到结束的所有关键字参数都被收集到一个叫param的字典中。 - 当我们调用方法时显示的使用
*,即表示将当前数组展开为多个参数。**同理
1 |
|
执行结果
(1, 2) ([1, 2, 3],) (1, 2, 3) [1, 2, 3] Traceback (most recent call last): File "/Users/li/Downloads/test.py", line 21, in <module> m2(*a)
调用方法显示使用**
1 | para = {'a': 1, 'b': 2} |
{'a': 1, 'b': 2} '----------------- Traceback (most recent call last): File "/Users/li/Downloads/test.py", line 12, in <module> m(para)
默认参数
1 | def log(level='debug'): |
debug hello info
全局变量
全局变量需要在外部声明,在方法内部使用时需要在方法内部使用 global 申声明
1 | name = None |
None bar
开启一个简单的 http 服务
python2 或者低版本,直接敲
1 | python -m SimpleHTTPServer <port> |
python3
1 | python -m http.server <port> |