【问题标题】:Why are these lines of code legal in python?为什么这些代码行在 python 中是合法的?
【发布时间】:2019-04-29 02:03:17
【问题描述】:

编辑: 似乎这个问题与列表切片和使用的错误代码相混淆。进一步澄清问题。

想问一下下面两行代码字面意思在python中是什么意思。

In [51]: data = list(range(10))                                                                              
In [53]: data[-1]   

背景

我不小心通过 python 语法检查器 (pylint) 运行了上面的原始 Jupyter Notebook 输出,令人惊讶的是它没有抛出语法错误,而是

In [53]: data[-1]  
   ^ (bad-whitespace)
code2.py:1:0: C0111: Missing module docstring (missing-docstring)
code2.py:1:0: E0602: Undefined variable 'In' (undefined-variable)
code2.py:1:9: E0602: Undefined variable 'data' (undefined-variable)
code2.py:2:0: E0602: Undefined variable 'In' (undefined-variable)
code2.py:2:9: E0602: Undefined variable 'data' (undefined-variable)

------------------------------------------------------------------------
Your code has been rated at -115.00/10 (previous run: -90.00/10, -25.00)

所以我试着理解这些代码行的实际作用。

我尝试插入缺失的变量。

这就是我得到以下结果的地方,它看起来像一个字典赋值。

In = {}
data = ['apple'] # This list needed values, otherwise data[-1] threw an error

In [51]: data = list(range(10))                                                                              
In [53]: data[-1] 

print(In)    # {51: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]}

# Why were there no values for key 53? (either {53: 'apple'})

我无法真正理解这两行代码发生了什么。

我不认为这行代码是合法的In [51]: data = list(range(10)),既然如此,为什么在那之后没有分配In [53]的值?

因此,我们将不胜感激任何对参考文献的解释或指导。谢谢。

【问题讨论】:

  • 对不起,我想我的问题被误解了。我试图澄清为什么代码对 python 是合法的。更新了我的问题,希望这次我能更好地回答我的问题:)
  • @Goyo 哦,这真的很有帮助。谢谢,我要学习一些新东西

标签: python jupyter-notebook pylint


【解决方案1】:

如果有人和我有同样的问题,我会回答这个问题。

感谢@Goyo 将我引向Python 3.6 中引入的Variable Annotations

variable: annotation = assignment

与使用 cmets 相比,此语法用于注释变量中的类型(fruit: str = 'apple'fruit = 'apple' # type: str)。

注释字段中的值没有严格执行,这就是语法合法的原因。

第一句话

In [51]: data = list(range(10))

Variable = In [51] 
Annotation = data
Assignment = list(range(10))  

第二个陈述

In [53]: data[-1]

Variable = In [53]
Annotation = data[-1]

【讨论】:

    【解决方案2】:

    你永远不会给

    赋值
    In [53]
    

    您只需访问字典的这一部分。如果你做这样的事情,条目就会出现在字典中。

    In[53]: data[-1] = 'hello world'
    
    Result: {51: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 53: 'hello world'}
    

    【讨论】:

      猜你喜欢
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      • 2017-10-09
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      相关资源
      最近更新 更多