import sys
myreallist = [x for x in range(0, 10000)]
print(sys.getsizeof(myreallist))
87632
实际内存占用87632字节,远高于通过range函数生成的对象。
6、返回多个值
Pyhon中的函数都可以返回多个变量,而不需要字典,列表或者类作为返回对象。方法如下:
def get_user(id):
fetch user from database
…
return name, birthdate
name, birthdate = get_user(4)
对于有限数量的返回值,这是可以的。但是任何超过3个值的内容都应该放到一个(data)类中。
7、使用 data 类
从3.7版本开始,python提供了 data 类。与常规类或其他替代方法(如返回多个值或字典)相比,有以下几个优点:
-
数据类需要至少一定数量的代码
-
可以通过 eq 方法来比较不同的data类对象
-
可以 repr 通过很容易地打印一个数据类来进行调试
-
数据类需要类型提示,因此减少了 bug
一个data类的例子如下:
from dataclasses import dataclass
@dataclass
class Card:
rank: str
suit: str
card = Card(“Q”, “hearts”)
print(card == card)
True
print(card.rank)
‘Q’
print(card)
Card(rank=‘Q’, suit=‘hearts’)
8、就地变量交换
一个简洁的技巧,可以节省几行代码:
a = 1
b = 2
a, b = b, a
print (a)
2
print (b)
1
9、字典合并(Python 3.5+)
从python 3.5开始,字典的合并变得更简单了:
dict1 = { ‘a’: 1, ‘b’: 2 }
dict2 = { ‘b’: 3, ‘c’: 4 }
merged = { **dict1, **dict2 }
print (merged)
{‘a’: 1, ‘b’: 3, ‘c’: 4}
10、将字符串转化为标题格式
在标题格式中,非介词的首字母会大写。可以通过.title()方法实现:
mystring = “10 awesome python tricks”
print(mystring.title())
‘10 Awesome Python Tricks’
11、将字符串分离并存储到列表中
可以按任意字符来分割字符串,并存储到列表中,例如按空格来分割字符串