'''第二题,写出下面的输出结果''' a=1 def fun(a): a=2 return a a=fun(a) print(a) ''' 3. 如何判断一个邮箱是否合法: 1.使用正则表达式判断 2. ''' ''' 4.实现一个装饰器,限制该函数被调用的频率,比如十秒一次 ''' def run(func): def inner(*args,**kwargs): import time time.sleep(10) return func(*args,**kwargs) return inner @run def B(*args): print(args) print('time') B('苟利国家生死以') #5.lanmbda 函数的作用,lanmbda和reduce实现1到100的累加 '''.lanmbda是一个匿名函数,''' # f=lambda x,y,z:x+y+z # print(f(1,2,3)) '''其中reduce函数是python中的一个二元内建函数, 它可以通过传给reduce中的函数(必须是二元函数) 依次对数据集中的数据进行操作。''' from functools import reduce list=[i for i in range(1,101)] a=reduce(lambda x,y:x+y,list) print(a) 6. :type,list,dict,set的特点 list:查找速度慢,但节省空间,有序性,可变性 dic:查找速度快,但消耗内存,无序性,可变性 type:不可变性:不能重新赋值与替换,有序性 set:唯一性,无序性 ''' ''' 7. staticmethod和classmethod的作用: 一般来说,要使用某个类的方法,需要先实例化一个对象在调用方法。 而使用@staticmethod或classmethod,就可以不需要实例化,直接类名.方法名来调用。 这有利于组织代码,把某些应该属于某个类的函数给放到那个类里,同时有利于代码整洁 区别: @staticmethod不需要表示自身对象的self和自身类的cla参数,就跟使用函数一样 @classmethod也不需要self参数,但第一个参数需要表示自身类的cls参数 ''' class A(): cap='A' def foo(self): print('B') @staticmethod def static_cap(): print('static') print(A.cap) A().foo() @classmethod def class_foo(cls): print('class') print(cls.cap) cls().foo() print(A.cap) # A.static_cap() # A.class_foo() '''8.迭代器与生成器的理解''' ''' 1.迭代器协议是指:对象提供next()方法,返回迭代迭代中的下一项, 要么就引起一个异常,终止迭代 2.可迭代对象是:含有 __iter__ 方法返回一个迭代器,任何可以for循环的都是可迭代对象, 比如一个二进制文件 ''' ''' 生成器: Python使用生成器对延迟操作提供支持,所谓延迟操作, 是指在需要的时候产生结果,而不立即产生,通常是指需要数据的量特别大时, 而不需要消耗很大的内存 1.生成器函数:使用常规函数定义,使用yield的返回结果,每个结果中间, 挂起函数的状态,以便下次继续执行,这个函数即是一个生成器对象 2.生成器表达式;类似于类表推导式,元祖表达式,返回一个生成器对象,而不是一个元祖 ''' ''' 9. 单列模式: singleton patten 是一种常用的软件设计模式, 该模式是为了确保某个类只有一个实例存在 在Python中,可使用多种方法来实现单列模式: 1.使用模块 2.使用__new__ 3.使用装饰器(decorator) 4.使用元类(metaclass) 5.将类名绑定到实例上 ''' class MySingleton(): def __init__(self): print(1) MySingleton=MySingleton() class MySingleton(): _instance = None def __new__(cls, *args, **kwargs): if not cls._instance: cls._instance = super(MySingleton,cls).__new__(cls,*args,**kwargs) return cls._instance class Myclass(MySingleton): x=1 a=Myclass() b=Myclass() print(a==b) print(a is b) ''' 10. web框架是如何维持用户的登录状态的: 1.把用户信息,存放于session中,再给客户端返回一个coolie信息 2.通过form表单 3.通过querystring '''