python基础--学习过程中容易忽略的一些小知识点总结《疑难杂症》

1:断言

      assert这个关键字成为“断言”,当这个关键字后面的条件为假得时候,程序自动崩溃并抛出AssertionError的异常。  一般来说,可以用它在程序中置入检查点, 当需要确保程序中某个条件一定为真才能让程序正常工作时,assert关键字就非常有用了。

     实例:

list = []
assert len(list) > 0    # 在此处设置断言,如果列表空,则直接抛出异常,不能遍历列表
for i in list:
    print(i)

    输出结果:

   当我们在assert之前为列表中添加上元素,则就可以执行for那条语句了。。

list = []
list.append(10)
assert len(list) > 0
for i in list:
    print(i)      #最后的输出结果为10

2:列表的拷贝

   

       上述代码解释:我们创建了一个列表list1,然后通过赋值的方式赋给list2,通过切片的方式赋值给list3。  最后输出它们三者的地址,发现list1和list2指向的同一块内存,而list3指向的内存不同。下面画个图解释一下这种情况。

 

        赋值只是复制了指向,并没有复制真正的数据。。而通过切片进行复制时,对数据真正进行了复制(备份).

3:sort()和sorted()的区别

      列表中内建方法sort()是实现列表原地排序, 而sorted()是返回一个排序后的新列表。

     

      上述代码解释:我们先创建了一个列表t1,然后用sorted()对原始列表排序紧接着赋值给t2, 此时,输出t1, t2, 我们发现t1是无序的,而t2是有序的,说明sorted()不是原地排序(不会改变原始序列的顺序)。。我们又使用sort()进行排序,然后输出t1,发现此时的t1顺序改变了。 说明是原地排序。。

4: zip()函数的作用

     zip(iter1, iter2......)  方法用于返回由各个可迭代参数共同组成的元组。

    实例:

  

    记住:里面的参数要是可迭代对象。。

5:闭包

     闭包是函数式编程的一个重要的语法结构

     如果一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包

     实例:

    

     闭包拓展:

         刚才在内部函数funY()中不能修改x变量,若想要修改,必须用nonlocal关键字

         实例:

        

6:lambda表达式

       

       以后碰见lambda表达式,就把它赋值的那个变量(在本例中是g)当做函数名, lambda后面的,:符号之前的变量当做参数。 :符号之后的式子为函数体。

7:copy模块中copy()方法和deepcopy()方法

     

         根据上述代码可知  目前b,c都得到了a的值 。。 接着往下看

    

         上述代码,我们给a[0]赋了100。 输出发现只有a中的值改变。。b 和c 都没改变 。。 说明b, c缺失把a中的值复制了一份,不是指复制了索引。。这句话其实有点问题  。。 接着往下看

   

      上述代码:我们把a列表中第三个元素(列表)第一个值改变了。赋值为shawroa。。 此时输出,我们发现a ,b中的那个位置的值发生了变化,而c则没变。。

总结:

   

     
注意:         

        copy对于一个复杂对象的子对象并不会完全复制,什么是复杂对象的子对象呢?就比如序列里的嵌套序列,字典里的嵌套序列等都是复杂对象的子对象。对于子对象,python会把它当作一个公共镜像存储起来,所有对他的复制都被当成一个引用,所以说当其中一个引用将镜像改变了之后另一个引用使用镜像的时候镜像已经被改变了。
        deepcopy的时候会将复杂对象的每一层复制一个单独的个体出来

在继承中的区别(自己建两个类试一下,有时间补上):

         浅拷贝: copy模块的copy方法,  拷贝父对象,不会拷贝对象的内部的子对象。即浅复制只复制对象本身,没有复制该对象所引用的对象。

         深拷贝:copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。即创建一个新的组合对象,同时递归地拷贝所有子对象,新的组合对象与原对象没有任何关联。虽然实际上会共享不可变的子对象,但不影响它们的相互独立性。

 

全部评论

相关推荐

机械打工仔:不管啥专业,找工作改简历的第一课先把你那排版改了,简历上不要写个人简历四个字,找你要简历的谁不知道这个是简历?而且还占那么多空间,直接把自己名字和基础信息写上面,整体字体大一些。 还有这种经典两页简历一页大空白,导出PDF的时候多了一页几乎全是白的你自己看着不难受吗随手的事为啥不能改掉呢,这是态度问题,你试想一下你是HR你打开简历看到格式都没调整过会是什么感受?你自己都不重视你的简历,HR更不会在意。 然后内容你那个做两年咖啡就别往里写了,简历在精不在多,你在往你的简历里打字的时候就要想好这东西对你要找的工作有没有帮助。自我评价写一行就行了,不如给专业技能单开一栏。核心课程均分90这个真别写了,把你上过的有用的专业课列出来也行。有很多地方废话很多的精炼一下,比如你校内项目第一个写的那些,全然没有重点。 好好修改一下,我看你内容也挺优秀的,别被一个随便做的简历耽误了,我一个同专业的打工人看了都揪心更别说一天看几百份简历的HR
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务