python 练习--知识点复习
来源:互联网 发布:java 延时10秒 编辑:程序博客网 时间:2024/05/21 10:48
# 41行——重要知识点# a = 1# def fun(a):# a = 2# print(a) #1# a = []# def fun(a):# a.append(1)# fun(a)# print(a) # [1]#python 中的类本身也是一个对象# class ObjectCreator(object):# pass# print(type(1))# print(type("1"))# print(type(ObjectCreator))# print(type(ObjectCreator()))# ObjectCreator = type('ObjectCreator', (), {})# print(type(ObjectCreator))# print(type(ObjectCreator()))# example_1与2等价# class Foo(object):# bar = True# example 2 # Foo = type('Foo', (), {'bar' : True})# def echo_bar(self):# print(self.bar)# SubFoo = type('SubFoo', (Foo, ), {'echo_bar': echo_bar})# SubFoo().echo_bar()# class Person(object):# name = "aaa"# p1 = Person()# p2 = Person()# p1.name = "bbb"# print(p1.name)# print(p2.name)# print(Person.name)# Person.name = "111"# print(p1.name)# print(p2.name)# print(Person.name)# class Person(object):# name = []# p1 = Person()# p2 = Person()# p1.name.append(1)# print(p1.name)# print(p2.name)# print(Person.name)# Python自省# 自省就是面向对象的语言所写的程序在运行时,所能知道对象的类型.# 简单一句就是运行时能够获得对象的类型.比如type(),dir(),getattr(),hasattr(),isinstance().# class MyClass(object):# def __init__(self):# self._name = "private"# self.__name = "__MyClass__private"# mc = MyClass()# print(mc._name)# print(mc._MyClass__name)# print(mc.__name)# #迭代器# mylist = [x*x for x in range(3)]# print(mylist)# #特殊的迭代器(生成器)# mylist = (x*x for x in range(3))# print(mylist)# for i in mylist:# print(i)# 新式类和旧式类# 1)首先,写法不一样:# class A:# pass# class B(object):# pass# 2)在多继承中,新式类采用广度优先搜索,而旧式类是采用深度优先搜索。# 3)新式类更符合OOP编程思想,统一了python中的类型机制。# 单例模式# 1、使用模块# 写成两个文件,在一个文件引入模块,python模块默认是单例的# 2、__new__# class Singleton(object):# _singleton = None# def __new__(cls, *k, **kw):# if cls._singleton is None:# cls._singleton = super(Singleton, cls).__new__(cls, *k, *kw)# return Singleton._singleton# s1 = Singleton()# s2 = Singleton()# print(s1 is s2)# 3、使用装饰器# def singleton(cls, *k, **kw):# instances = {}# def getinstance():# if cls not in instances:# instances[cls] = cls(*k , **kw)# return instances[cls]# return getinstance# @singleton# class MyClass(object):# pass# print(MyClass() is MyClass())# 4、使用metaclass# class Singleton(type):# _singleton = None# def __call__(cls, *k, **kw):# if cls._singleton is None:# _singleton = super(Singleton, cls).__call__(*k, **kw)# return cls._singleton# class MyClass(metaclass = Singleton):# pass# print(MyClass() is MyClass())# unix进程间通信方式(IPC)# 管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。# 命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。# 命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。# 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;# linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,# BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。# 消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,# 被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺# 共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,# 如信号量结合使用,来达到进程间的同步及互斥。# 内存映射(mapped memory):内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间# 来实现它。# 信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。# 套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,# 但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。# 1 台阶问题/斐波纳挈# 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。# fibonacci = lambda n: n if n <= 2 else fibonacci(n - 2) + fibonacci(n - 1)# print(fibonacci(10))# def fibonacci(n):# x, y = 0, 1# for i in range(n):# x, y = y, x + y# return y# print(fibonacci(10))# def memo(func):# d = {}# def wrap(*args):# if args not in d:# d[args] = func(*args)# return d[args]# return wrap# @memo# def fibonacci(n):# if n < 2:# return 1# return fibonacci(n - 1) + fibonacci(n - 2)# print(fibonacci(10)) # 2 变态台阶问题# 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。# func = lambda n: 2**(n-1)# print(func(10))# 3 二分查找# def binarySearch(L, num):# left, right = 0, len(L) - 1# while left <= right:# mid = (right - left)//2 + left# if L[mid] < num:# left = mid + 1# elif L[mid] > num:# right = mid - 1# else:# return mid# return False# L = [11, 13, 19, 23, 48, 54, 111, 222]# print(binarySearch(L, 222))
阅读全文
0 0
- python 练习--知识点复习
- python复习。知识点小记
- python复习。知识点小记
- 复习知识点
- 知识点复习
- 知识点复习
- 复习练习
- 笨办法学 Python · 续 练习 12:复习
- 框架 day58 BOS项目练习(基于activiti物流配送流程,启动,查询,办理,项目知识点复习)
- BOS项目练习(基于activiti物流配送流程,启动,查询,办理,项目知识点复习)
- 办公自动化知识点复习
- struts知识点复习
- Orcale 复习知识点
- Android面试复习知识点
- 复习本周知识点
- Hibernate_知识点复习
- 九九乘法表(知识点复习)
- Android面试知识点复习
- 每周荐书:架构、Scratch、增长黑客(评论送书)
- Linux各发行版本优缺点简介 点评时间:2015-03-12
- mysql面试题总结
- java 对象术语
- 回传的json数据需要注意的格式
- python 练习--知识点复习
- 创建Win2003域和Win2008域之间的信任关系,Active Directory系列之十八
- 微服务架构的设计模式
- Oracle 远程 RAC 打造双活数据中心 | 从容灾迈向双活案例分享
- meta 标签的总结
- 第三方支付集成
- intentservice之下载图片到本地
- 域名选择对日后网站SEO优化有点深远影响-20170208
- 安卓黄油刀的使用