V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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
miniyao
V2EX  ›  Python

flask 教程里 db.DateTime 和 db.DateTime() 带不带括号()有什么区别?

  •  
  •   miniyao · 2018-02-25 23:50:07 +08:00 · 4024 次点击
    这是一个创建于 2466 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://github.com/miguelgrinberg/flasky/blob/master/app/models.py

    line 80:

    timestamp = db.Column(db.DateTime, default=datetime.utcnow)
    

    line 94 和 line 95:

    member_since = db.Column(db.DateTime(), default=datetime.utcnow)
    

    db.DateTime 后面带不带括号有什么区别吗?

    8 条回复    2018-02-26 22:35:51 +08:00
    ericls
        1
    ericls  
       2018-02-25 23:59:04 +08:00 via iPhone
    看看 db.Column 的代码呢
    vainl1
        2
    vainl1  
       2018-02-26 00:00:53 +08:00 via iPhone   ❤️ 2
    <pre>
    def f():
    return 1

    print f
    print f()
    </pre>
    个人理解,一个是函数指针,一个是函数调用,传递的是调用的结果值。python 新手,如理解有误欢迎指正交流。
    coolair
        3
    coolair  
       2018-02-26 00:16:27 +08:00 via Android
    这两个在这里这样用没有区别,都可以。
    但是,注意后面的
    est
        4
    est  
       2018-02-26 00:18:28 +08:00 via Android
    flask 教程质量良莠不齐。sqlalchemy 更是深坑
    coolair
        5
    coolair  
       2018-02-26 00:18:35 +08:00 via Android   ❤️ 2
    但是,注意后面的 default=datetime.utcnow,这里要传函数。如果用的是 default=datetime.utcnow(),就传了函数执行的结果,是一个固定值(应用跑起来的时间)。
    Tyanboot
        6
    Tyanboot  
       2018-02-26 00:20:21 +08:00   ❤️ 1
    指示类型的时候这两个没区别, 但是后面的 default 就有区别了. default 里带上 () 就是定值了, 值是创建表的时候的值, 不带 () 的话就是创建类的时候的值.
    miniyao
        7
    miniyao  
    OP
       2018-02-26 10:24:14 +08:00
    @coolair
    @Tyanboot

    后面的那个坑踩过一回了,所以不确定前面这个是不是也有坑
    lolizeppelin
        8
    lolizeppelin  
       2018-02-26 22:35:51 +08:00 via Android
    用来对应数据库里字段类型的 原则上传 class 才是对的

    能传带括号应该是内部做了兼容
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3090 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 14:35 · PVG 22:35 · LAX 06:35 · JFK 09:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.