面试题
- python内建数据类型有哪些
整数(int)
浮点数(float)
布尔值(bool)
字符串(str)
列表(list)
字典(dict)
元组(tuple)
集合(set)
- 一行代码实现1-100之间的和
sum(range(1,101))
- 如何在一个函数内部修改全局变量
a = 0
def fn():
global a
a = 2
fn()
print(a)
- 字典如何删除键和合并两个字典
a = {"a1":"1","a2":"2"}
del a["a1"]
b = {"a3":"3"}
a.update(b)
print(a)
- 一句话解释什么样的语言能够使用装饰器
1.函数可以作为参数传递的语言,可以使用装饰器。
2.装饰器通常用户函数或者方法,在python等支持闭包和函数作为一等对象的编程语言中,可以使用装饰器
def out(fn):
def inner():
print("start...")
fn()
print('end...')
return inner
@out
def myself():
print('asd')
- func(args,**kwargs)中的args,**kwargs是什么意思
*args用来传递不定量的位置参数。当一个函数的参数列表中有*args,表示可以接受任意数量的位置参数,并将他们打包为一个元组,传递给参数内部。在函数内部,可以通过遍历或者索引来访问这些参数
**kwargs;用于传递不定量的关键字参数,当一个函数的参数列表中有kwargs时,表示可以接受任意数量的关键字参数,并将他们打包为一个字典,传递给参数内部,在函数内部,可以通过键来访问这些参数的值
def my_function(*args, **kwargs):
print("Positional arguments (*args):")
for arg in args:
print(arg)
print("\nKeyword arguments (**kwargs):")
for key, value in kwargs.items():
print(f"{key} = {value}")
my_function("apple", "banana", "cherry", color="red", price=1.5)
- 简述面向对象中的__new__和__init__的区别
1.__new__方法用来创建对象
__new__是一个类方法,用于创建一个新的实例对象,他是在对象实际创建之前被调用的,因此他是静态方法,而不是实例方法,__new__芳芳返回一个新创建的实例对象,如果需要自定义对象的创建过程,可以重写__new__方法,例如在实例初始化之前对对象进行一些处理
2.__init__的方法用来初始化对象。
__init__是一个实例方法,用于初始化新创建的实例对象的状态,他是在对象已经被创建之后调用的,用于设置对象的初始化属性,__init__不需要返回值,他只是初始化了对象的属性。如果需要自定义对象的初始化过程,可以重写__init__方法,例如设置对象的初始化状态,或者执行一些初始化的操作。
3.总体来说,__new__方法用于创建实例对象,而__init__方法用户从初始化实例化对象的状态。在绝大多数的情况我们更常见的使用__init__方法来实例化对象。而不需要重写__new__方法,但是如果我们需要对对象的创建过程进行一些特殊的处理,例如创建单例模式对象或者自定对象的创建行为,那么可以重写__new__方法
- 简述with方法打开处理文件时候,帮我们做了什么
1.代开文件在运行读写的时候可能出现一些异常状况,如果按照常规的f.open的写法,我们嫩需要try,except,finally,做异常判断,并且文件最终不管遇到什么情况,都要执行finally f.close()方法来关闭文件,with方法帮我们实现了finally中的f.close()
2.在python中,with语句是用于简化资源管理的以中语法结构。他提供了以中在代码块执行前获取资源,在代码块执行结束后哦释放资源的方式,无论代码块是否正常执行或者发生异常,都能保证资源的正确释放。with语句的常见用法是与文件操作,数据库连接,网络连接等需要显示关闭或者释放资源的场景进行配合使用。
3.在with语句执行的时候,首先调用上下文管理器的__enter__方法获取资源,并将资源赋值给参数,然后执行with语句块中的代码。最后,不论代码块中是否发生异常,都会调用上下文管理器的__exit__的方法释放资源。
- 列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式取出大于10的数,最终输出[16,25]
a = [i for i in range(1,6)]
def fn(num):
return num**2
res = map(fn, a)
print(res)
res = [i for i in res if i > 10]
print(res)
- python取随机数
import random
import numpy as np
a = random.randint(10,20)
b = np.random.randn(5)
c = random.random()
print("正整数",a)
print("5个随机小数",b)
print("0-1随机小数",c)