携手创作,共同成长!这是我参与「掘金日新计划 · 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(12, 4)
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))
\