当前位置: 首页 > news >正文

网站结构形式贵阳网站制作系统

网站结构形式,贵阳网站制作系统,婚纱网站模板,贵阳手机网站建设费用前言 完残#xff01;#x1f602;#xff0c;最近看之前写的 Python 代码老得琢磨这比变量的类型是啥#xff08;Python 无类型系统xxx#xff09;#xff0c;不愧是我写的#xff01; 看段之前写的实现迭代器模式的代码#xff1a; # 抽象迭代器类 class Iterator(…前言 完残最近看之前写的 Python 代码老得琢磨这比变量的类型是啥Python 无类型系统xxx不愧是我写的 看段之前写的实现迭代器模式的代码 # 抽象迭代器类 class Iterator(object):def hasNext():passdef next():pass# 抽象聚集类 class Aggregate(object):def iterator():passclass BookShelf(Aggregate):def __init__(self):self._books []self._last 0def getBookAt(self, index):return self._books[index]def appendBook(self, book):self._books.append(book)self._last self._last 1def getLength(self):return self._lastdef iterator(self):return BookShelfIterator(self)class BookShelfIterator(Iterator):def __init__(self, bookShelf):self._bookShelf bookShelfself._index 0def hasNext(self):if self._index self._bookShelf.getLength():return Trueelse:return Falsedef next(self):book self._bookShelf.getBookAt(self._index)self._index self._index 1return bookclass Book():def __init__(self, name):self._name namedef getName(self):return self._nameif __name__ __main__:bookShelf BookShelf()bookShelf.appendBook(Book(A))bookShelf.appendBook(Book(B))bookShelf.appendBook(Book(C))bookShelf.appendBook(Book(D))it bookShelf.iterator()while it.hasNext():book it.next()print(book.getName()) 有一丢丢难读不通读的话会乱猜某变量类型回想之前在 PyCon China 2019 的大会资聊曾看到过类型检查相关的演讲主题回顾下演讲视频。水一波写篇文章了解下 Python 标准(PEP 3107 PEP 484 )支持的 mypy。 类型系统编译期的类型推导检查规则类型系统属于一种轻量级的形式化方法一种数学方法 使用-mypy # 安装 mypy pip install mypy # 使用 mypy 做类型检查 mypy module_name.py 以下使用方式适用于 Python 3.6 及以上的版本。值得注意mypy 默认的推导类型不可为 None 变量的类型注释 integer: int 1 string: str ShanSan err_str: str 1 # error: Incompatible types in assignment child: bool True # mypy 默认的推导类型不可为 None none: int - None # error: Invalid type comment or annotationprint(integer, string) 内建类型 关于更多 mypy 的类型系统内建的类型可参考https://mypy.readthedocs.io/en/stable/builtin_types.html from typing import Dict, Tuple, Optional, Iterable, Union # 对于映射(Map)数据结构需要指定 key 和 value 的类型 x: Dict[str, float] {field: 2.0}# Tuple 需要指定所有元素的类型 x: Tuple[int, str, float] (3, yes, 7.5)# error: Incompatible types in assignment (expression has type Tuple[int, str, float, int], variable has type Tuple[int, str, float]) y: Tuple[int, str, float] (3, yes, 7.5, 11)op: Optional[str] None # 可为 str 或 None# 泛用可迭代对象 l: Iterable [1] t: Iterable (1, 2) d: Iterable {1: 1}# 可为 str 或 int str_int1: Union[str, int] 1 str_int2: Union[str, int] ss str_int3: Union[str, int] None # error 函数注解 from typing import NoReturndef f1() - None:passdef f2() - NoReturn: # 无返回值passdef plus(num1: int, num2: int) - int:return num1 num2# 带默认值 def plus_default(num1: int, num2: int 3) - int:return num1 num2# 容器的参数类型 def container_param(names: List[str]) - None:for name in names:print(name) 类成员注解 class MyClass:attr: int# 带默认值的实例变量charge_percent: int 100# 没有任何返回值应该注解为 Nonedef __init__(self) - None:pass# 忽略对 self 类型的注解def my_method(self, num: int, str1: str) - str:return num * str1# 支持自定义类型的注解 x: MyClass MyClass() 结尾 OK 差不多了对之前的迭代器模式的代码改造一波 from typing import List, Iterable# 抽象迭代器类 class Iterator(object):def hasNext(self):passdef next(self):pass# 抽象聚集类 class Aggregate(object):def iterator(self):passclass BookShelf(Aggregate):def __init__(self) - None:self._books: List[Book] []self._last: int 0def getBookAt(self, index: int) - Book:return self._books[index]def appendBook(self, book: Book) - None:self._books.append(book)self._last self._last 1def getLength(self) - int:return self._lastdef iterator(self) - BookShelfIterator:return BookShelfIterator(self)class BookShelfIterator(Iterator):def __init__(self, bookShelf) - None:self._bookShelf: BookShelf bookShelfself._index: int 0def hasNext(self) - bool:if self._index self._bookShelf.getLength():return Trueelse:return Falsedef next(self) - Book:book: Book self._bookShelf.getBookAt(self._index)self._index self._index 1return bookclass Book():def __init__(self, name) - None:self._name: str namedef getName(self) - str:return self._nameif __name__ __main__:bookShelf: BookShelf BookShelf()bookShelf.appendBook(Book(A))bookShelf.appendBook(Book(B))bookShelf.appendBook(Book(C))bookShelf.appendBook(Book(D))it: Iterator bookShelf.iterator()while it.hasNext():book: Book it.next()print(book.getName()) emmm, 舒服了一丢丢/(ㄒoㄒ)/~~ 参考 https://github.com/python/mypyPyCon China 2019 成都分会场-刘知杭-静态类型的 Python, videoPyCon China 2019 北京分会场-依云-类型检查拯救粗心开发者, videoType hints cheat sheet (Python 3) 本文由博客群发一文多发等运营工具平台 OpenWrite 发布
http://www.pierceye.com/news/645119/

相关文章:

  • 邢台网站建设服务商教育网站制作软件
  • 罗湖区住房和建设局网站官网建设香帅摩托车官网
  • 网站建设一条东莞手机微信网站
  • 网站界面设计修改要多少钱wordpress博客转出
  • 17网站一起做网店代发流程建立一个网站需要人员
  • 如何添加网站关键词天津建设工程信息网官罿
  • 医疗网站的建设设计要注意什么做网站赚钱吗 怎么赚
  • 创造有价值的网站建设银行网站上改手机
  • 商城网站租服务器安全不怎么做和美团一样的网站
  • 网站建设 sql 模版做网站的工具 论坛
  • 万网虚拟主机两个网站权重域名做网站有用么
  • 门户网站是指六盘水做网站
  • 自助建站系统免费加盟设计用哪些网站有哪些
  • 太原制作公司网站无锡网站优化公司
  • html5 wap网站模板动画广州网站建设 信科公司
  • 西安门户网站开发wordpress如何在文章底部添加目录
  • 设计婚纱网站宁波网站优化服务
  • 建设电子商务网站的花费那些公司做网站比较厉害
  • 桂林建站平台哪家好东莞百度快速排名提升
  • 网页设计框架哈尔滨网络优化推广公司
  • 深圳专业做网站技术西安网站设计报价
  • 做电影资源网站动图制作网站
  • 网站域名免费申请深圳龙华怎么样
  • 织梦建设手机网站wordpress中portfolio
  • 网站开发的检索速度在啥范围之内设计网站大全网
  • 外国人学做中国菜的网站php购物网站开发成品
  • 手机网站专题网站建设私活
  • 自建网站 备案视频号广告推广
  • 青岛网站优化东莞市场监督管理局官网
  • 深圳珠宝网站设计临沂seo优化