我是新手,我正在阅读这样一段代码:
...
proto = ('http', 'https')[bool(self.https)]
...
Run Code Online (Sandbox Code Playgroud)
看起来这条线路proto要在'http'和之间切换'https'.
但这( , )[ .. ]意味着什么?我怎样才能利用这种风格?
Roc*_*key 10
第二个元素(在括号中)是将在第一个元素上使用的索引.所以在这种情况下,你有一个元组:
('http', 'https')
Run Code Online (Sandbox Code Playgroud)
然后是一个表示是否self.https设置的布尔值.如果是,则值为1,拨打电话:
('http', 'https')[1]
Run Code Online (Sandbox Code Playgroud)
这将从https元组中选择值.这利用了bool作为子类的事实,int可能被视为滥用:)
In [1]: t = ('http', 'https')
In [2]: t[0]
Out[2]: 'http'
In [3]: t[1]
Out[3]: 'https'
In [4]: https_setting = True
In [5]: int(https_setting)
Out[5]: 1
In [6]: t[bool(https_setting)]
Out[6]: 'https'
In [7]: True.__class__.__bases__
Out[7]: (int,)
Run Code Online (Sandbox Code Playgroud)
有关此技术的很酷用法,请查看此视频中的2:14 (这也恰好是一个很棒的视频!).它索引一个string('^ ')而不是一个元组,但概念是相同的.
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |