记录小梁学习日常

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")

输出结果:

记录小梁学习日常_第1张图片

# *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))

输出结果:

你可能感兴趣的:(学习,python)