type
status
date
slug
summary
tags
category
icon
password
字符串与数值
- 不必预先计算字面表达式
对于950400 = 11 * 24 * 3600,表达式用 if delta_seconds > 11 * 24 * 3600也不会造成额外开销,更能表达代码含义。
- 超长字符串可读性的改善
- 不可变:函数内部会生成一个新对象,原对象(orig_obj所指对象不受影响)
- 可变:函数内部对对象的变动会同样影响原对象
- 推导式
- 具名元组 namedtuple
对于超长文本,可以随意换行来拆行
对于多级缩进代码中出现多行字符串情况,我们如果不用额外工具,只能写成这样
显然这种写法破坏了代码的缩进视觉效果,显得突兀。为解决这个问题,一方面可以将多行字符串提取为外层全局变量,另一个解决办法就是使用标准库textwrap来解决:
dedent方法会删除整段字符串左侧的空白缩进。
容器类型
1、函数传参本质
Python在进行函数调用传参时,既不是值传递也不是引用传递,而是传递了“变量所指对象的引用”,当你调用func(orig_obj)时,函数内部创建了一个变量in_func_obj,它和传入函数的外部变量orig_obj都指向同一个对象。相当于执行了in_func_obj=orig_obj。所以对于函数内部执行in_func_obj += … 等修改操作,是否会影响外部变量,只取决于in_func_obj所指向的对象本身是否可变:
列表、集合、字典有推导式,元组没有,但是
(i for i in range(10))
也是合法语句,会生产一个生成器。普通元组只能按照索引访问,而具名元组除了可以按照索引访问外,还能为元组中为每个成员命名,这样可以通过名称访问成员。(函数返回多个对象,可以用具名元组包裹,然后用名称形式访问各个对象)