优雅导入模块
按如下顺序导入模块就是一种好做法:
- 标准库模块------比如:
sys
、os
、getopt
、re
等。 - 第三方库模块(安装于 Python site-packages 目录中的内容)------如requests、PIL.Image 等。
- 本地开发的模块
如何找到对象的方法或属性?
假定 x 是一个用户自定义类的实例,dir(x) 将返回一个按字母排序的名称列表,其中包含了实例的属性及由类定义的方法和属性。
逗号运算符的优先级是什么?
逗号不是 Python 的运算符。 请看以下例子:
Python
>>> "a" in "b", "a"
(False, 'a')
由于逗号不是运算符,而只是表达式之间的分隔符,因此上述代码就相当于:
Python
("a" in "b"), "a"
而不是:
Python
"a" in ("b", "a")
对于各种赋值运算符( =
、 +=
等)来说同样如此。他们并不是真正的运算符,而只是赋值语句中的语法分隔符。
如何根据另一个列表的值对某列表进行排序?
将它们合并到元组的迭代器中,对结果列表进行排序,然后选择所需的元素。
Python
>>> list1 = ["what", "I'm", "sorting", "by"]
>>> list2 = ["something", "else", "to", "sort"]
>>> pairs = zip(list1, list2)
>>> pairs = sorted(pairs)
>>> pairs
[("I'm", 'else'), ('by', 'sort'), ('sorting', 'to'), ('what', 'something')]
>>> result = [x[1] for x in pairs]
>>> result
['else', 'sort', 'to', 'something']