- 解释一下python?
- 解释性语言,在代码运行之前不需要编辑解释执行,
- 动态类型语言,声明变量时,不需要说明变量的类型。
- 面向对象编程,执行组合与继承的方式来定义类。
- 编写快,但运行速度比编译型语言通常要慢。
2. 赋值,浅拷贝,深拷贝区别。
赋值在python中与C++中不同,python中就是简单的对象引用,指向同一片内存。
def value():
a = b = 1
print(a==b)
print(a is b)
print(id(a),id(b))
浅拷贝 会创建新对象,内容为原对象内第一层对象的引用。
浅拷贝的三种方法
- 切片
- 工厂模式
- 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]
深拷贝: 深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。
- __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 是如何进行类型转换的?
- 类型转换
- 进制转换