python进阶:提高代码控制能力,必须知道的19个特性

本文概述了Python编程中的关键特性,如列表推导的简洁原则,生成器和生成器表达式的使用,时间复杂度分析,元组的不可变性,以及如何处理字符串编码和异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面是我在开发中对python的一些理解,也有一部分参考于《流畅的python》。这本书写的非常好,非常建议大家读读。

19个特性

  1. 通常的原则是,只用列表推导来创建新的列表,并且尽量保持简短。 如果列表推导的代码超过了两行,你可能就要考虑是不是得用 for 循环重写了。
  2. Python 会忽略代码里 []、{} 和 () 中的换行,因此如果你的代码里有多行的列表、 列表推导、生成器表达式、字典这一类的,可以省略不太好看的续行符 \。
  3. if __name__=="__main__":中包含的变量为全局变量
  4. 函数传参,如果是关联性不太强,个数不太多的参数,最好不使用元组传参
  5. 生成器
geneator = (i for i in range(0,9))
def geneator(num):
    while true:
        if num>0:
            yield num
            num-=1
  1. in的时间复杂度:
    1. 使用集合,字典时间复杂度为O(1)
    2. 使用列表等,时间复杂度为O(n)
  2. 了解嵌套元组拆包
  3. Python 程序员会默认序列是支持 + 和 * 操作的。通常 + 号两侧的序列由相同类型的数据 所构成,在拼接的过程中,两个被操作的序列都不会被修改,Python 会新建一个包含同样 类型数据的序列来作为拼接的结果
  4. 可变类型是指对象的值可以改变的数据类型,比如列表、字典、集合等。可变类型的特点是可以在原地修改并且修改后会保持对象的同一标识。也就是说,如果你对一个可变类型的对象进行了修改,那么这个对象的标识(id)不会变,只是其值发生了改变。这与不可变类型(比如整数、字符串、元组等)的特点是相反的,对于不可变类型,我们不能直接修改其值,只能创建新的对象来代替原来的对象。
  5. Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域。其它的代码块(如 if/elif/else/、try/except、for/while等)不会引入新的作用域,也因此这些语句内定义的变量,外部也可以直接访问
  6. 10**7 等于 10的七次方
  7. 元组就是 用作存放彼此之间没有关系的数据的记录。
  8. 如果你在迭代一个字典的所有键的过程中同 时对字典进行修改,那么这个循环很有可能会跳过一些键——甚至是跳过那些字典中 已经有的键。 由此可知,不要对字典同时进行迭代和修改。如果想扫描并修改一个字典,最好分成 两步来进行:首先对字典迭代,以得出需要添加的内容,把这些内容放在一个新字典 里;迭代结束之后再对原有字典进行更新。
  9. 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。 用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器。python中的字符串为unicode类型
  10. 装饰器会在载入模块时,就会执行
  11. 元组的不可变性其实是指 tuple 数据结构的物理内容**(即保存的引用)不可变,与引用的对象无关**
  12. 类属性定义 a = 123,实例属性定义 self.a =123
  13. 生成器表达式可以理解为列表推导的惰性版本:不会迫切地构建列表,而是返回一个生成 器,按需惰性生成元素。
  14. 如果函数或构造方法只有一个参数,传入生成器表达式时不用写一对调用函数的括 号,再写一对括号围住生成器表达式**,只写一对括号就行了 **test_generator(i for i in range(0,9))
  15. 避免try except 中出现错误
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值