isinstance作用:来判断一个对象是否是一个已知的类型;
其第一个参数(object)为对象,第二个参数为类型名(int...)或类型名的一个列表((int,list,float)是一个列表)。其返回值为布尔型(真 假)。
若对象的类型与参数二的类型相同则返回True。若参数二为一个元组,则若对象类型与元组中的名称相同即返回True。
Method Realtion Order 用来制作一个继承关系的列表 MRO列表的制作原则: 1、子类永远在父类的前面 2、如果继承了多个父类,那么按照()中的顺序在列表中摆放 3、如果多个类同时继承了一个父类,孙子类中只会选取第一个父类中的父类的该方法
try: print("123") expect: print("456") 通过raise 异常对象主动抛出异常```
实例方法,类方法,静态方法都可以通过实例或者类调用,只不过实例方法通过类调用时需要传递实例的引用
三种方法从不同层次上来对方法进行了描述:实例方法针对的是实例,类方法针对的是类,他们都可以继承和重新定义,而静态方法则不能继承,可以认为是全局函数。
在不改变原函数的代码的基础上,在执行前后进行定制操作
def wapper(func): def inner(*args,**kwargs): return func(*args,**kwargs) return inner @wapper def index(s): return s+100 print(index(10))
应用场景
flask路由
django csrf
django缓存
django内置认证
search:在整个字符中匹配,如果找不到匹配的就返回``None match:在字符串开始位置匹配如果不匹配就返回None 效率上match要高于search,不管是消耗时间还是内存占比search都要大于match
map是用同样方法把所有数据都改成别的..字面意思是映 射..比如把列表的每个数都换成其平方..
** reduce是用某种方法依次把所有数据丢进去最后得到一个结果..字面意思是化简..比如计算一个列表所有数的和的过程,就是维持一 个部分和然后依次把每个数加进去..**
filter是筛选出其中满足某个条件的那些数据..字面意思是过滤..**比如挑出列表中所有奇数**..
>>> map(lambda x:x*x,[0,1,2,3,4,5,6]) [0, 1, 4, 9, 16, 25, 36] >>> reduce(lambda x,y:x+y,[0,1,2,3,4,5,6]) >>> filter(lambda x:x&1,[0,1,2,3,4,5,6]) [1, 3, 5]
1 bool
2 int
3 float
4 complex 复数
5 bin 整型转换为二进制
6 oct 整型转换为八进制
7 hex 整型转换为十六进制
8 abs 求绝对值
9 divmod (除,余数)
10 round (值,小数后几位)
12 sum
13 max
14 min
15 list
16 tuple
17 reversed
a.py class AdminSite(object): pass obj1 = AdminSite() #创建一个实例(单例) b.py #调用实例 import a a.obj1 a.obj1 a.obj1 a.obj1 #不管调用多少次,始终只执行同一个实例
print ('\n'.join([' '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)]))
三元运算符就是在赋值变量的时候,可以直接加判断,然后赋值
三元运算符的功能与'if....else'流程语句一致,它在一行中书写,代码非常精炼,执行效率更高 [on_true] if [expression] else [on_false] res = 值1 if 条件 else 值2
机器码是电脑CPU直接读取运行的机器指令,运行速度最快,难编写
字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码
1.Python 的模块就是天然的单例模式,因为模块在第一次导入时,会生成 .pyc
文件,当第二次导入时,就会直接加载 .pyc
文件,而不会再次执行模块代码。
2。装饰器使用装饰器来调用call方法。
先执行了类的new方法(我们没写时,默认调用object.new),实例化对象;然后再执行类的init方法,对这个对象进行初始化,所有我们可以基于这个,实现单例模式。
默认类由type创建,通过metaclass可以指定当前类是由哪一个type创建。
1.默认类由type实例化创建 2.某个类指定metaclass=Mytype,那么当前类的所有派生类都由Mytype创建 3.实例化对象
getattr
它的核心本质其实就是利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动!
python的四个重要内置函数:getattr
、hasattr
、delattr
和setattr
较为全面的实现了基于字符串的反射机制。他们都是对内存内的模块进行操作,并不会对源文件进行修改。
其实,在上面的例子中,围绕的核心主题是如何利用字符串驱动不同的事件,比如导入模块、调用函数等等,这些都是python的反射机制,是一种编程方法、设计模式的体现,凝聚了高内聚、松耦合的编程思想,不能简单的用执行字符串来代替。当然,exec和eval也有它的舞台,在web框架里也经常被使用。
count=0 #计数 numss=[] #初始化 for i in range(1,6): #百位循环 for j in range(1,6):#十位循环 for x in range(1,6):#个位循环 if (i!=j) and (i!=x) and(j!=x): #判断不重复的三个数 num=100*i+10*j+x count+=1 #累加 if num not in numss: numss.append(num) #添加到数组 print(count,numss)
functools用于高阶函数:指那些作用于函数或者返回其他函数的函数。通常情况下,只要是可以被当做函数调用的对象就是这个模块的目标
super() 函数是用于调用父类(超类)的一个方法。 super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。
(),[],{},0
Python3:Python3中int类型的范围是动态长度的,正整数或者负整数
Python2:Python2中long类型的范围是无限大小.