大家写 Python 时,有使用过第二种 dict.get 吗

2018-04-19 19:20:33 +08:00
 u14e

刚在 https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iii-web-forms 评论下面看到作者说起下面这两种写法的区别,想问问 v 友用的是哪种

# case1
SECRET_KEY = os.environ.get('SECRET_KEY', 'Your Majesty')

# case2
SECRET_KEY = os.environ.get('SECRET_KEY') or 'Your Majesty'
4023 次点击
所在节点    Python
27 条回复
vakara
2018-04-20 10:15:36 +08:00
有用过啊,
第一个是处理没有这个环境变量,返回后面的默认值。
第二个是指定环境变量默认值(可以没有,可以为空),返回默认值。
vipppppp
2018-04-20 11:27:07 +08:00
这个链接是 flask
。。之前中途接手了一个 flask 项目,由于前后端没有沟通好,很无奈采取了一个很蛋疼的操作。
举个简单的例子:
index = request.value.get('index', 0)
可是这个我的 index 要是一个整数!!
然后 get 请求的参数一般是 string 类型。。
于是我:
index = int(request.value.get('index', 0))
可是无奈的是,有时 url 是?index=&...
index 来了个 None 值。。
于是:
index = int(request.value.get('index') or 0)
T_T
di94sh
2018-04-20 11:39:28 +08:00
@vipppppp 我记得可以这样写
index= request.value. get('index', 0, type= int)
OldPanda
2018-04-20 14:13:29 +08:00
一般都是写成 SECRET_KEY = os.getenv('SECRET_KEY', 'Your Majesty')
aliao0019
2018-04-20 16:35:53 +08:00
```python

In [1]: di = {'a': 0}

In [2]: di.get('a') or 1
Out[2]: 1

In [3]: di.get('a', 1)
Out[3]: 0
```
Kylin30
2018-04-25 01:25:37 +08:00
又学一招,感谢。
smdbh
2018-05-02 14:32:56 +08:00
感谢,正好用到,会看复习下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/448228

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX