一:python函数:

1:引用传值还是数值传递?

  • 如果传递的是可变类型则是引用传值。
  • 如果传递的是不可变类型则是传值。

2:解释**kwargs与*args:

  • 1:*ages是将传递的值打包成元祖交给函数。
  • 2:**kwargs是将传递的值打包成字典传递给函数。

二:python列表:

1:求列表的交集,并集,差集:

list1 = [1, 2, 3, 4]
list2 = [3, 4,  5, 6, 7]

print("交集是:", list(set(list1) & set(list2))) # 两个共有的
print("并集是:", list(set(list1) | set(list2))) # 两个都有的
print("差集是:", list(set(list1) ^ set(list2))) # 全部的去除共有的

三:字符串:

1:反转字符串:

my_str = "abcdef"
print("反转后的字符串:{}".format(my_str[::-1]))

四:手写单例模式:

  • 1:重写__new__方法:
  • 2:判断语句,调用父类的__new__方法生成实例对象,让类属性保存。
  • 3:返回类属性。
class Single_Class(object):
    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, '_instance'):
            cls._instance = super(Single_Class, cls).__new__(cls, *args, **kwargs)
        return cls._instance

五:斐波那锲数列:

案例:生成前10位的斐波那锲数列:

# 生成一个生成器对象
def feibonaqie(max_num):
    a, b = 0, 1
    flag = 0
    while flag < max_num:
        yield a
        a, b = b, a+b
        flag += 1

obj = feibonaqie(100)
print([o for o in obj])

六:lambda表达式和推导式:

1:lambda表达式:

# 4: 把匿名函数当做参数传递给另一个函数:建立一个函数,让他传递什么方法内部变量就进行什么操作。
def calculate_value(func):
    num1 = 1
    num2 = 2
    result = func(num1, num2)
    print(result)

def add_num(v1, v2):
    return v1 + v2
calculate_value(add_num)

# 简化  :
calculate_value(lambda x, y: x+y)

2:推导式:

#练习题4:利用列表推导式,把姓张的数据过滤出来放在一个列表里
my_list = [{"name": "张三", "age": 23}, {"name": "李四", "age": 24}, {"name": "张三丰", "age": 25}]
value = [item for item in my_list if item["name"][0] == "张"]
print(value)

# 输出: [{'name': '张三', 'age': 23}, {'name': '张三丰', 'age': 25}]

# 练习题5 :利用列表推导式,把姓名是张三丰,年龄等于25的人过滤出来
value = [item for item in my_list if item["name"] == "张三丰" and item["age"] == 25]
print(value)
# 输出结果:[{'name': '张三丰', 'age': 25}]

# 练习6:利用列表推导式,将元组转化成字典列表
my_list2 = [("李四", 20), ('王五', 24)]
value = [{"name": name, "age": age}for name, age in my_list2]
print(value)

七:sort 与sorted的区别:

  • 1: list.sort()方法是列表专用的,sorted(可迭代对象),是可迭代对象通用的。
  • 2:sort不需要返回值(内存地址不会改变),sorted必须要一个返回值。
  • 2:sorted(可以指定迭代的key)。
  • 3:sorted()中有一个参数是key,key可以是一个匿名函数,这个匿名函数可以指定排序的关键字段。sorted函数内部会使用这个匿名函数获取到排序的键。
list = [2, 3, 1, 5, 7]
list.sort()
print(list)

list2 = [4, 5, 2, 4, 6, 1]
list2 = sorted(list2)
print(list2)

list_dict = [{"name": "张三", "age": 15}, {"name": "李四", "age": 22}, {"name": "王五", "age": 24}]
# 按年龄逆序
list_dict3 = sorted(list_dict, key=lambda x: x['age'], reverse=True)
print(list_dict3)

八:手写装饰器:

链接:https://blog.csdn.net/qq_41341757/article/details/109401119

九:介绍ORM框架以及优点和缺点:

答:ORM框架:三个字母分别代表:对象(模型类),关系(数据表),映射(模型类与数据表之间的关系)。
优点:
1:根据我们设计的模型类自动帮助我们生成数据库中对应的数据表。
2:屏蔽数据库的差异,不再关心用什么数据库了。
3:防止SQL注入的问题。