Python 代码。输入模块名称错误

Python code. Name error with input module

这是我正在使用的代码。我正在使用两组代码。当我将代码合并到一个程序中时,它按预期的方式工作。当我尝试导入 "arithemtics" 模块时,它不会定义变量。我花了很多时间试图解决这个问题,但我担心它非常简单

import arithmetics


def main():
    num1 = float(input('Enter a number:'))
    num2 = float(input('Enter another number:'))

    total(num1,num2)
    difference(num1,num2)
    product(num1,num2)
    quotient(num1,num2)

main()

这里是"arithmetics"输入模块

def total(num1,num2):
    total = num1 + num2
    print(format(total, ',.1f'))


def difference(num1,num2):
    difference = num1 % num2
    print(format(difference, ',.1f'))

def product(num1,num2):
    product = num1 * num2
    print(product)

def quotient(num1,num2):
    quotient = num1 / num2
    print(quotient)
import arithmetics


def main():
    num1 = float(input('Enter a number:'))
    num2 = float(input('Enter another number:'))

    arithmetics.total(num1,num2)
    arithmetics.difference(num1,num2)
    arithmetics.product(num1,num2)
    arithmetics.quotient(num1,num2)

main()

这是因为函数在arithmetics模块中,不能通过import arithmetics全局访问,arithmetics中的函数需要用模块名调用后跟像这样的函数名称 arithmetics.<function>.

或者你可以这样做:

from arithmetics import *

这会将 arithmetics 中的所有函数导入脚本的范围,就好像它们是在脚本本身中定义的一样。

请注意,做 from x import *(尤其是本例中的星号)并不是最优雅或最有效的做事方式,如果可能,请尝试仅从库中导入您需要的函数(在您的情况下星标会起作用,因为您无论如何都在使用所有功能,但其他库可能很大,您可能不需要所有功能)。

要做到这一点,您可以这样做:

from arithmetics import total, difference, product, quotient

如果你使用

import arithmetics

您需要像这样限定函数名称

arithmetics.total
arithmetics.difference
arithmetics.product
arithmetics.quotient

或者

from arithmetics import total, difference, product, quotient

那么这些名字就可以在你的模块中正常使用了

第三个选择

from arithmetics import *

不鼓励,因为它不明确,并且当有人向 arithmetics 添加更多可能导致冲突的名称时可能会导致神秘的破坏