1.如何在一个函数内部修改全局变量
a=5
def fn():
global a
a=7
fn()
print(a)
2. 字典如何删除键和合并两个字典(del和update方法)
dic = {"name":"hugh","age":22}
del dic["name"]
print(dic)
dic1={"sex":"boy"}
dic.update(dic1)
print(dic)
运行结果如图:
3. fun(*args,**kwargs)中的*args,**kwargs是什么意思
*args和**kwargs用户函数定义时候预先不知道会传递多少个参数,也就是可变参数的传递。
# *args用来传递非键值对的可变参数列表
def demo(args_f,*args):
print(args_f)
print(args)
for x in args:
print(x)
demo("a","b","c","d")
输出结果:
# *kwargs用来传递键值对类型的可变参数列表
def demo(**args_v):
for k,v in args_v.items():
print(k,v)
demo(name="hnkjxx")
输出结果:
4.简述面向对象中_new_和_init_区别
_ _init_ _ 方法自动被调用,创建对象时候可以接收
参数
class Student:
def __init__(self,name,age):
self.name = name
self.age = age
def study(self):
print("好好学习,天天向上")
# 创建学生对象
student = Student("hugh",18)
print(student.name)
print(student.age)
输出结果:
1、_new_至少要有一个参数cls,代表当前类此参数在实例化时由Python解释器自动识别。
2、new 必须要有返回值,返回实例化出来的实例,这点在自己实现 new 时要特别注意,可以return父类 (通过super(当前类名,cs))new 出来的实例,或者直接是object. new出来的实例。
3、init 有一个参数self,就是这个 new 返回的实例,_init_在_new_的基础上可以完成些其它初始化的动作, init 不需要返回值。
4、如果 new 创建的是当前类的实例,会自动调用 init 函数,通过return语句里面调用的new函数的第一个参数是cs来保证是当前类实例,如果是其他类的类名,;那么实际创建返回的就是其他类的实例,其实就不会调用当前类的 init 函数,也不会调用其他类的 init 函数。
class A(object):
def __int__(self):
print("这是init方法",self)
def __new__(cls):
print("这是cls的id",id(cls))
print("这是new方法",object.__new__(cls))
return object.__new__(cls)
A()
print("这是类A的id",id(A))
输出结果: