python的一些代码规范

74 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

1.from unittest import TestCase 进行单元测试
setUp()在每个test执行前都要执行的方法。
​
tearDown()在每个test执行后都要执行的方法。(不管是否执行成功)

使用:

import unittest
​
class my_demo(unittest.TestCase):
   def setUp(self):
       self.a = 1
   def test1(self):
       print("test11111111111111:", self.a)
   def test2(self):
       print("test2222222222222:", self.a)
   def test3(self):
       print("okkkkkkkk")
       demo1(124)
   def tearDown(self):
       print("teardown")
​
def demo1(w,g):
   if(w > g):
       print("True")
​
​
if __name__ == '__main__':
   unittest.main()
2.导入依赖时可以写在函数中

解释器在执行语句时,遵循作用域原则。如果在顶层导入模块,它的作用域是全局的;如果在函数内部导入了模块,它的作用域只是局部的,不能被其它函数使用,如果其它函数也要用到这个模块,还需要再次导入。

模块导入非常快,但不是即时的。这意味着:

  • 把导入放在模块的顶部是可以的,因为这是一个只需支付一次的微不足道的成本。
  • 将导入放到函数中会导致对该函数的调用花费更长的时间。
3.函数参数类型检查、设置参数的类型、返回值类型
from iclientpy.typeassert import typeassert

函数定义:

def add(x:int, y:int) ->bool:
if(x>y):
return True
else:
return False
4.代码注释规范

在函数下定义下的第一行使用 """ 来进行注释

"""
上传数据
​
Args:
  data_name: 数据名称
  data_content: 数据流
  type: 数据类型
  callback: 上传进度回调方法
​
Returns:
数据的id
"""
5.with StringIO(df.to_json()) as dff:

With...as...:如果你想要让你创建的对象能被 with 使用,那么你这个对象必须要有 enter () 和 exit() 这两个方法。

1.通过 with 语句可以得到一个上下文管理器
​
2.执行对象
​
3.加载 __enter__ 方法
​
4.加载 __exit__ 方法
​
5.执行 __enter__
​
6.as 可以得到 enter 的返回值
​
7.拿到对象执行相关操作
​
8.执行完了之后调用 __exit__ 方法
​
9.如果遇到异常,__exit__ 可以获取到异常信息
​
10.在 __exit__ 中处理异常,返回 True
​
11.继续执行 with 后面的语句。
6.三元运算符
_version_postfix = ('_' + _version + '.' +  _build_num) if _version and _build_num else ''
7.函数定义时设置参数的类型
class AbstractMap:
  layer: Layer = None
  map: Map = None
  _url: str = None
  _crs: str = None
8.min函数和max函数可以设置比较的类型

找出句子中最长的单词

str1 = 'Life is short , I use python'
print(max(str1.split(), key = len))

找出句子中ASCII码最大的单词

ans = max(x.split(),key=lambda k: sum(ord(c) for c in k))


\