欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python3 特色菜

程序员文章站 2022-06-24 12:56:32
背景最近项目遇到一个问题:一个开源的python3.7的工程需要在python2.7的环境下运行起来。别问我为什么没找到python2.7的源码,问就是没有,py官网已经发话了20200101开始停止支持python2.7,所以人家都不用了吧。feature1: 类型注解python3.5的特性。**存在的必要性:**方便提示变量的函数。现在的IDE做的都贼智能化,可以提示变量能调用的函数,这样的好处很多,防止误拼,加快打字节奏,尤其是工程较大时,记不住所有类函数,这时候联想功能就很amazing了...

背景

最近项目遇到一个问题:一个开源的python3.7的工程需要在python2.7的环境下运行起来。别问我为什么没找到python2.7的源码,问就是没有,py官网已经发话了20200101开始停止支持python2.7,所以人家都不用了吧。

feature1: 类型注解

python3.5的特性。
**存在的必要性:**方便提示变量的函数。现在的IDE做的都贼智能化,可以提示变量能调用的函数,这样的好处很多,防止误拼,加快打字节奏,尤其是工程较大时,记不住所有类函数,这时候联想功能就很amazing了。但python2的特色就是无变量类型。pyhton3.5就重新拾回这一特性了,真香回归现场,哈哈哈。
**不合理性:**失去了模板函数的优势。

举个栗子

实现一个加法函数

# python2.7
def add(a, b):
    return a+b

# python3.7 
def add(a: int, b: int = 0) -> int:
    return a+b

feaure2: dataclass

python3.7的特性。
存在的合理性:减少一遍白痴的赋值,人性化。python2.7的类构造函数一般就是用来赋值的,将外界变量存成类的成员变量(貌似其他语言的构造函数也一样),将函数参数与__init__函数的赋值合二为一,人性化。
不合理性:貌似没有,哈哈哈。

举个栗子

实现一个student类

在这里插入代码片
# python2.7
class student(object):
  """this is an example class"""
  def __init__(self, 
               name,
               id,
               age = 18):
    self.name=name
    self.id=id
    self.age=age

# python3.7
@dataclass
class student:
  """this is a dataclass example"""
  name: str 
  id: int
  age: int = 18

本文地址:https://blog.csdn.net/RogersStar/article/details/107169855