Python面经记录新手版

6 阅读3分钟

对应文档**附答案 | 最强Python面试题之Python基础题(1)_牛客网**

  1. 解释一下python?
  • 解释性语言,在代码运行之前不需要编辑解释执行,
  • 动态类型语言,声明变量时,不需要说明变量的类型。
  • 面向对象编程,执行组合与继承的方式来定义类。
  • 编写快,但运行速度比编译型语言通常要慢。

2. 赋值,浅拷贝,深拷贝区别。

赋值在python中与C++中不同,python中就是简单的对象引用,指向同一片内存。

def value():
    a = b = 1
    print(a==b)
    print(a is b)
    print(id(a),id(b))

image.png

浅拷贝 会创建新对象,内容为原对象内第一层对象的引用。

浅拷贝的三种方法

  • 切片
  • 工厂模式
  • copy
def shadow_copy():
    origen_list = [1,[1,3],4]
    old_list = origen_list
    new_list = old_list.copy()
    print(old_list==new_list)
    print(old_list is new_list)
    print(id(old_list),id(new_list))
    old_list[1][0] = [222]
    print(f"old list is{old_list},new list is {new_list}")
True
False
2775542620352 2775581111872
old list is[1, [[222], 3], 4],new list is [1, [[222], 3], 4]

深拷贝: 深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。

  1. __new__与init的区别

**调用关系:**先调用new,再调用init。

  • new:分配空间
  • init:初始化
class Person:
    def __new__(cls, name):
        print("__new__ called")
        instance = super().__new__(cls)
        return instance
    
    def __init__(self, name):
        print("__init__ called")
        self.name = name

p = Person("Alice")
# 输出:
# __new__ called
# __init__ called

4、Python 的变量、对象以及引用?

变量是指向内存空间的指针。 对象是内存空间 引用是由变量到对象的指针。

5、创建百万级实例如何节省内存?

使用slot属性。

6、Python 里面如何生成随机数?

random.random():生成一个 0-1 之间的随机浮点数
random.uniform(a, b):生成[a,b]之间的浮点数
random.randint(a, b):生成[a,b]之间的整数
random.randrange(a, b, step):在指定的集合[a,b)中,以 step 为基数随机取一个数random.choice(sequence):从特定序列中随机取一个元素,这里的序列可以是字符串,列表,元组等。

7、Python 是强语言类型还是弱语言类型?\

Python 是强类型的动态脚本语言。

8、谈一下什么是解释性语言,什么是编译性语言?

计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。

解释性语言在运行程序的时候才会进行翻译。

编译型语言写的程序在执行之前,需要一个专门的编译过程,把程序编译成机器语言(可执行文件)。

9、Python 中有日志吗?怎么使用?

  • logger级别
    • debug
    • info
    • warn
    • error
    • critical
  • basicConfig配置
    • 在当前路径下生成日志文件
    • 配置时间:format = ``'%(asctime)s : %(levelname)s : %(message)s'
    • 配置级别 level= logging.DEBUG

10、Python 是如何进行类型转换的?

  • 类型转换
  • 进制转换