# python命名规范 # 先来看变量命名。变量名请拒绝使用 a b c d 这样毫无意义的单字符,我们应该使用能够代表其意思的变量名。 # 一般来说,变量使用小写,通过下划线串联起来, # 例如:data_format、input_spec、image_data_set。 # 唯一可以使用单字符的地方是迭代,比如 for i in range(n) 这种,为了精简可以使用。 # 如果是类的私有变量,请记得前面增加两个下划线。对于常量,最好的做法是全部大写,并通过下划线连接, # 例如:WAIT_TIME、SERVER_ADDRESS、PORT_NUMBER。 # 对于函数名,同样也请使用小写的方式,通过下划线连接起来, # 例如:launch_nuclear_missile()、check_input_validation()。 # 对于类名,则应该首字母大写,然后合并起来,例如:class SpatialDropout2D()、class FeatureSet()。 # 断言assert # Python 的 assert 语句,可以说是一个 debug 的好工具,主要用于测试一个条件是否满足。 # 如果测试的条件满足,则什么也不做,相当于执行了 pass 语句; # 如果测试条件不满足,便会抛出异常 AssertionError,并返回具体的错误信息(optional)。 # assert 1 == 2 or 1 == 1, "1不等于2" # print("aaaa") # 总结 :assert的使用应该是,有没有assert程序都能够正常运行,但有了assert可以使我们的代码后期维护更加方便 # 单元测试 # 首先,我们需要创建一个类TestSort,继承类‘unittest.TestCase’; # 然后,在这个类中定义相应的测试函数 test_sort(),进行测试。 # 注意,测试函数要以‘test’开头, # 而测试函数的内部,通常使用 assertEqual()、assertTrue()、assertFalse() 和 assertRaise() 等 assert 语句对结果进行验证。 # 最后只需要在主函数中执行unittest.main()即可 # import unittest # # # # 将要被测试的排序函数 # def sort(arr): # l = len(arr) # for i in range(0, l): # for j in range(i + 1, l): # if arr[i] >= arr[j]: # tmp = arr[i] # arr[i] = arr[j] # arr[j] = tmp # # # # 编写子类继承unittest.TestCase # class TestSort(unittest.TestCase): # # # 以test开头的函数将会被测试 # def test_sort(self): # arr = [3, 4, 1, 5, 6] # sort(arr) # # assert 结果跟我们期待的一样 # self.assertEqual(arr, [1, 3, 4, 5, 6]) # # # if __name__ == '__main__': # # 如果在Jupyter下,请用如下方式运行单元测试 # # unittest.main(argv=['first-arg-is-ignored'], exit=False) # # # 如果是命令行下运行,则: # unittest.main() # 用命令行运行时,想要调试,可以用pdb # 常见命令行命令 p xxx =>print(xxx) # n 表示继续执行一行 # l 表示列出当前代码行的上下共十一行代码(上下各五行) import pdb a = 1 b = 2 pdb.set_trace() c = 3 print(a + b + c) # 用cProfile进行性能分析 # 只需导入该模块,并且在最后运行cProfile.run()即可 # 或者在命令行中输入 python3 -m cProfile xxx.py import cProfile # def fib(n) # def fib_seq(n): cProfile.run('fib_seq(30)')