导入语句对不同模块的工作方式不同?

时间:2017-08-07 07:17:36

标签: python import

我正在学习Python,现在我正在学习Python中的import语句。我正在测试一些代码,我遇到了一些不寻常的东西。这是我正在测试的代码。

from math import pow as power
import random as x

print(pow(2, 3))
print(power(2, 3))
print(x.randint(0, 5))
print(random.randint(0, 5))

我了解到,在Python中,您可以使用as重新分配模块的名称,因此我将权力重新赋予权力。我希望pow(2, 3)power(2, 3)输出完全相同的东西,因为我所做的就是更改名称。但是,pow(2, 3)输出8,这是一个整数,而power(2, 3)输出8.0,这是一个浮点数。那是为什么?

此外,我还导入了random模块,并将其名称设置为x。在pow和power的情况下,旧名称pow和新名称power都有效。但是使用此随机模块,只有新名称x可用,而旧名称random不起作用。 print(x.randint(0, 5))有效,但random.randint(0, 5)不起作用。为什么会这样?

任何人都可以向像我这样的Python新手解释为什么我的代码没有像我期望的那样工作?我正在使用Python版本3.62,如果有帮助的话。

2 个答案:

答案 0 :(得分:4)

这是因为当您从数学导入pow作为power然后拨打pow时,pow就是pow调用是内置函数,而不是数学模块中的random

对于x,python中没有内置函数,因此您只能导入Welcome to Node-RED =================== 7 Aug 09:05:20 - [info] Node-RED version: v0.17.5 7 Aug 09:05:20 - [info] Node.js version: v6.11.2 7 Aug 09:05:20 - [info] Darwin 16.7.0 x64 LE 7 Aug 09:05:20 - [info] Loading palette nodes 7 Aug 09:05:21 - [warn] ------------------------------------------------------ 7 Aug 09:05:21 - [warn] [rpi-gpio] Info : Ignoring Raspberry Pi specific node 7 Aug 09:05:21 - [warn] [synaptiq-solar] Error: Cannot find module 'xmlhttprequest' 7 Aug 09:05:21 - [warn] ------------------------------------------------------ 7 Aug 09:05:21 - [info] Settings file : /Users/rudi/.node-red/settings.js 7 Aug 09:05:21 - [info] User directory : /Users/rudi/.node-red 7 Aug 09:05:21 - [info] Flows file : /Users/rudi/.node-red/flows_Rudi.local.json 7 Aug 09:05:21 - [info] Server now running at http://127.0.0.1:1880/ 7 Aug 09:05:21 - [info] Waiting for missing types to be registered: 7 Aug 09:05:21 - [info] - synaptiq-solar

战斗机内置功能documentation

答案 1 :(得分:0)

当你使用pow时,你实际上正在使用内置的pow功能。

但没有内置函数称为随机因此它不起作用

通常在python中如果你使用'as',你只能使用你导入它的模块而不是它最初被称为