擅长:python、mysql、java
<p>你说得对。;)它们可能很难阅读,这也会使它们难以编写和调试。以下面的例子为例,听写理解:</p>
<pre><code>current_team = dict((k,v) for k,v in list(team.items()) for player in v[‘player’] if player['year'] == 2013)
</code></pre>
<p>太多年的C和Java编程让我很难读懂。理解在逻辑上被分成不同的部分,但我仍然需要真正地盯着它来分解它。在</p>
<p>要记住的关键是理解是一种表达,而不是陈述。因此,可以用parens包围表达式,然后使用<a href="http://docs.python.org/3/reference/lexical_analysis.html#implicit-line-joining" rel="nofollow">implicit line joining</a>添加换行符,根据其嵌套级别组织表达式:</p>
^{pr2}$
<p>这里更清楚的是“<a href="http://www.python.org/dev/peps/pep-0202/" rel="nofollow">the last index varying fastest, just like nested for loops.</a>”</p>
<p>您甚至可以添加空行和注释:</p>
<pre><code>current_players = (dict((k,v) # dict comprehension:
for k,v in list(team.items()) # let’s filter the team member dict...
for player in v['player'] # for players...
if player['year'] == 2013)) # who are playing this year
</code></pre>
<p>需要注意的是:Python语言参考说明“连续行的缩进并不重要”,因此可以使用任何形式的缩进来提高可读性,但是解释器不会做任何额外的检查。在</p>