improve your python code(7)

xiaoxiao2021-02-27  384

1. 避免finally的陷阱

回顾一下上一节我们画的图: 下面看一下这个代码

def FinallyTest(): print('I am starting------') while True: try: print('I am running') raise IndexError('r') except NameError as e: print('NameError happend {e}'.format(e=e)) break finally: print('finally executed') break # finally语句中有break语句 if __name__ == '__main__': FinallyTest() """output: I am starting------ I am running finally executed """

def ReturnTest(a): try: if a <= 0: raise ValueError('data cannot be negtive') else: return a except ValueError as e: print("ValueError:", e) finally: print("The end!") return -1 if __name__ == '__main__': print(ReturnTest(0)) print(ReturnTest(2)) """output: ValueError: data cannot be negtive The end! -1 The end! -1 """

2. None这个东东

# 判断list是否为空 list = [] if list is None: # 错误的方式 print("list is None") else: print("list is not None") if list: # 正确的方式 print("list is not None") else: print("list is None") """ output: list is not None list is None """

3. 连接字符串优先使用join而不是+

原因:

str1, str2, str3, str4, str5 = 'my', 'heart', 'will', 'go', 'on' combine_str = ''.join([str1, str2, str3, str4, str5]) print(combine_str) """ output: myheartwillgoon """

4. 用format而不是%

weather = ['a', 'b', 'c'] formatter = 'letter is: {0}'.format for item in map(formatter, weather): print(item) """ output: letter is: a letter is: b letter is: c """

5. 区别可变对象和不可变对象

class Student(object): def __init__(self, name, course=[]): # 这里有一个警告:Default argument value is mutable self.name = name self.course = course # def __init__(self, name, course=None): # 这是对上一个代码的修改 # self.name = name # if course is None: # self.course = [] # else: # self.course = course def addcourse(self,coursename): self.course.append(coursename) def printcoursename(self): print("student {self.name}'s course are:".format(self=self)) for item in self.course: print(item) LiMing = Student('LiMing') LiMing.addcourse("Math") LiMing.printcoursename() David = Student('David') David.addcourse("Art") David.printcoursename() print(id(LiMing), "|", id(David)) print(id(LiMing.name), "|", id(David.name)) print(id(LiMing.course), "|", id(David.course)) """ output1: student LiMing's course are: Math student David's course are: Math Art 2168438350288 | 2168438350456 2168438237256 | 2168438328040 2168438334024 | 2168438334024 output2: student LiMing's course are: Math student David's course are: Art 1946024173976 | 1946024174144 1946024061000 | 1946024151784 1946024178760 | 1946024157768 """

转载请注明原文地址: https://www.6miu.com/read-2342.html

最新回复(0)