【问题标题】:Does python read scripts different than other languages?python 读取脚本是否与其他语言不同?
【发布时间】:2017-03-03 16:37:24
【问题描述】:

目前我正在学习 Python(不是编程),我正在尝试用这种语言解决我的第一个问题。

首先我检查了import Xfrom X import Y 之间的区别。我知道第一次将包加载到命名空间而不是这个包的方法,所以你需要写X.Y,另一方面,第二个导入方式将函数和对包的引用加载到命名空间。尽管如此,我还是不明白为什么import math.sqrt 会失败。我收到此错误:math is not a package

有人知道会发生什么吗?

那我试试这个语句是怎么写的:

sum([
     pow(dic1[elem]–dic2[elem], 2)
     for elem in dic1 if elem in dic2 
    ])

正如我之前所说的,我知道编程并且理解它在做什么,但这对我来说似乎有点不合逻辑,因为 python 读取脚本的方向似乎与“典型”语言不同。

如果我没记错的话,这个语句将两个字典中元素之间的所有差异相加(动力为 2),但只有当它执行以 dic2 中存在 elem 为条件的 for 语句时才进行求和。

这对吗?

谢谢!

【问题讨论】:

  • stackoverflow.com/q/16341775/476。如果您一次只问一个问题,我们可能已经将其作为重复问题删除了。
  • 尝试import math; math.__file__import xml; xml.__file__math 是用 C 而不是 Python 实现的,因此可能有不同的导入行为。

标签: python


【解决方案1】:

对于您的第一个问题,请尝试:

from math import sqrt

关于你的第二个问题,是的,如果你来自其他语言,python 似乎确实以奇怪的顺序做事。例如:

x=1 if a=2 else 0

这和说的一样:

if a=2:
    x=1
else:
    x=0

如果你这样做:

x=[i*2 for i in [1,2,3,4]]

这意味着为列表 [1,2,3,4] 中的每个元素创建一个变量 i,将其乘以 2 并从结果中创建一个新列表。所以在上面的例子中 x 将是:

[2,4,6,8]

基本上,你会习惯的。

【讨论】:

  • 感谢您的回答。第一个有效,但我想了解导入数学失败的原因。你的第二个答案是完美的!谢谢!
猜你喜欢
  • 2011-02-26
  • 1970-01-01
  • 2021-01-11
  • 2022-08-21
  • 2012-09-19
  • 2020-08-15
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多