V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
cbsw
V2EX  ›  Python

Python type hint 被 PEP 接受了

  •  
  •   cbsw ·
    dengshuan · May 24, 2015 · 5939 views
    This topic created in 4001 days ago, the information mentioned may be changed or developed.

    pep-0484

    看看泛型在 Python 中怎么玩:

    from typing import TypeVar, Generic
    
    T = TypeVar('T')
    
    class LoggedVar(Generic[T]):
        def __init__(self, value: T, name: str, logger: Logger) -> None:
            self.name = name
            self.logger = logger
            self.value = value
    
        def set(self, new: T) -> None:
            self.log('Set ' + repr(self.value))
            self.value = new
    
        def get(self) -> T:
            self.log('Get ' + repr(self.value))
            return self.value
    
        def log(self, message: str) -> None:
            self.logger.info('{}: {}'.format(self.name message))
    

    感觉这是在往静态语言演化啊

    15 replies    2015-05-25 19:18:26 +08:00
    RIcter
        1
    RIcter  
       May 24, 2015 via iPad
    感觉和 swift 好像了…
    unity0703
        2
    unity0703  
       May 24, 2015
    想不明白,动态类型语言要范型干嘛
    unity0703
        3
    unity0703  
       May 24, 2015
    @unity0703 看原文中说目的有三点
    1、静态分析和重构
    2、运行时类型检查
    3、利用类型信息进行代码生成(也就是范型?)
    这真是要往静态语言演化了
    Septembers
        4
    Septembers  
       May 24, 2015 via Android
    @unity0703 有点看不明白Python的 类型系统 了
    davidlau
        5
    davidlau  
       May 24, 2015
    @Septembers 想做动静态语法都兼容,任由开发者选择,用于不同目的的系统开发?
    LPeJuN6lLsS9
        6
    LPeJuN6lLsS9  
       May 24, 2015
    幸好没有引入新关键词之类的东西,可以当它不存在。但是Cython之类扩展的“类型语法”和这个很不同,是不是会兼容这边呢……
    poke707
        7
    poke707  
       May 24, 2015 via Android
    不要像2 to 3要么不用要么强行妥协就可了
    像c++四大派也各玩各的互不影响
    cbsw
        8
    cbsw  
    OP
       May 24, 2015
    对现有代码没有任何影响,但新项目可以利用这个特性做一些类型检查,IDE 之类的用这个特性效率、准确性应该都会提高不少。
    @poke707 未来怎么演化就难说了
    @Livid 从 /new 入口发帖忘了选节点了,/new 默认是问答节点?能不能帮忙移到 /go/programmer/go/python
    Livid
        9
    Livid  
    MOD
    PRO
       May 24, 2015
    @cbsw 如果没有选的话,默认是 /go/new

    现在已经移动到 /gp/python
    cbsw
        10
    cbsw  
    OP
       May 24, 2015
    @Livid 哇,神速啊,谢谢!
    poke707
        11
    poke707  
       May 24, 2015 via Android
    @cbsw 恩,现在想到的是,有了这个看别人代码时会很有帮助
    fy
        12
    fy  
       May 24, 2015
    这很好啊,便于解释器分析和代码补全
    kongkongyzt
        13
    kongkongyzt  
       May 24, 2015
    非常好啊!很喜欢
    hjie
        14
    hjie  
       May 25, 2015
    看起来不优雅
    cbsw
        15
    cbsw  
    OP
       May 25, 2015
    与 java annotation 功能差不多
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3230 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 14:37 · PVG 22:37 · LAX 07:37 · JFK 10:37
    ♥ Do have faith in what you're doing.