| 
                         in 代替 or 
- >>> if x == 1 or x == 2 or x == 3: 
 - ...     pass 
 - ... 
 - >>> if x in (1,2,3): 
 - ...     pass 
 
  
字典代替多个if else 
- def fun(x): 
 -     if x == 'a': 
 -         return 1 
 -     elif x == 'b': 
 -         return 2 
 -     else: 
 -         return None 
 -  
 - def fun(x): 
 -     return {"a": 1, "b": 2}.get(x) 
 
  
有下标索引的枚举 
- >>> for i, e in enumerate(["a","b","c"]): 
 - ...     print(i, e) 
 - ... 
 - 0 a 
 - 1 b 
 - 2 c 
 
  
生成器 
注意区分列表推导式,生成器效率更高 
 
- >>> g = (i**2 for i in range(5)) 
 - >>> g 
 - <generator object <genexpr> at 0x10881e518> 
 - >>> for i in g: 
 - ...     print(i) 
 - ... 
 - 0 
 - 1 
 - 4 
 - 9 
 - 16 
 
  
默认字典 defaultdict 
- >>> d = dict() 
 - >>> d['nums'] 
 - KeyError: 'nums' 
 - >>> 
 -  
 - >>> from collections import defaultdict 
 - >>> d = defaultdict(list) 
 - >>> d["nums"] 
 - [] 
 
  
字符串格式化 
- >>> lang = 'python' 
 - >>> f'{lang} is most popular language in the world' 
 - 'python is most popular language in the world' 
 
  
列表中出现次数最多的元素 
- >>> nums = [1,2,3,3] 
 - >>> max(set(nums), key=nums.count) 
 - 3 
 -  
 - 或者 
 - from collections import Counter 
 - >>> Counter(nums).most_common()[0][0] 
 - 3 
 
  
读写文件 
- >>> with open("test.txt", "w") as f: 
 - ...     f.writelines("hello") 
 
  
判断对象类型,可指定多个类型 
- >>> isinstance(a, (int, str)) 
 - True 
 
  
类似的还有字符串的 startswith,endswith 
- >>> "http://foofish.net".startswith(('http','https')) 
 - True 
 - >>> "https://foofish.net".startswith(('http','https')) 
 - True 
 
  
__str__ 与 __repr__ 区别 
- >>> str(datetime.now()) 
 - '2018-11-20 00:31:54.839605' 
 - >>> repr(datetime.now()) 
 - 'datetime.datetime(2018, 11, 20, 0, 32, 0, 579521)' 
 
  
前者对人友好,可读性更强,,后者对计算机友好,支持 obj == eval(repr(obj)) 
使用装饰器 
- def makebold(f): 
 - return lambda: "<b>" + f() + "</b>" 
 -  
 - def makeitalic(f): 
 - return lambda: "<i>" + f() + "</i>" 
 -  
 - @makebold 
 - @makeitalic 
 - def say(): 
 - return "Hello" 
 -  
 - >>> say() 
 - <b><i>Hello</i></b> 
 
                          (编辑:泰州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |