面试题1

'''第二题,写出下面的输出结果'''
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
'''
原文地址:https://www.cnblogs.com/ldq1996/p/8027708.html