如何将两个功能打包到模块中?

时间:2019-02-07 20:29:20

标签: python module

我有两个函数用于newtons方法来估计用户输入的数字的根,但是我的任务是“将这些函数打包到模块中”。我承认我正在竭尽全力围绕模块的概念,并且找不到真正能帮助我的材料。

尝试将功能分别保存为两个不同的文件并使用import命令,但是似乎没有成功。

[编辑]试图在建立最终估算后不显示previous_x。

previous_x

[Edit2]先前的[x]仍然为“无”

enter image description here

def newtons_fourth(y):
x=1
N=0
previous_x = None

while N < 50:
    x=1/4*(3*(x) + y/(x**3))
    N=N+1
    print('Iteration number:',N)
    print('Estimation:',x)
    print('Previous x:',previous_x)
    print()

    if previous_x is not None:
        if abs(x - previous_x) < 0.0001:
            final=1
            print('Difference negligible')
            print('Final Estimation:',x)
            break

previous_x = x

if final!=1:
    return previous_x

2 个答案:

答案 0 :(得分:1)

是的,当您开始时,这会引起混淆,我对此表示支持。因此,让我使其变得超级简单。

python中的函数def是其中包含代码的容器。他们运行一次并完成。 类是在其中包含一堆函数(称为方法)的实例,这些函数可以操纵类中的数据,直到关闭类或使用命名实例完成程序为止。

x = Classname() #creates an instance of the class now named x
x.start() # runs the function start inside the class.  Can pass variables, or use existing variables under the self. notation.  

模块是其中包含函数或类的文件。所有模块均已导入。

import os
from os import getcwd #function or class inside the modeul

然后可以这样称呼他们:

print(os.getcwd())
print(getcwd())

可以导入任何.py文件。如果目录中包含名为__init__.py的文件,则可以导入目录。该文件可以为空。然后目录名称成为模块名称,并且单个文件是这样导入的子模块:

import myfolder.mymodule
from myfolder import mymodule # the same as above

那是我所能做到的。还有其他问题,您需要查看文档。但是您最好的选择是尝试,以错误的方式进行尝试,直到以正确的方式进行操作才是最好的老师。

答案 1 :(得分:1)

您“将功能分别保存为两个不同的文件并使用import命令”的想法是正确的。这是一种解决方法:

CubedModule.py

def newtons_cubed(y):
    x=1
    N=0
    previous_x = None

    while N < 50:
        x=1/3*(2*(x) + y/(x**2))
        N=N+1
        print('Iteration number:',N)
        print('Estimation:',x)
        print('Previous x:',previous_x)
        print()

        if previous_x is not None:
            if abs(x - previous_x) < 0.0001:
                print('Difference negligible')
                print('Final Estimation:',x)
                return

        previous_x = x

    print(previous_x)

FourthModule.py

def newtons_fourth(y):
    x=1
    N=0
    previous_x = None
    final = None

    while N < 50:
        x=1/4*(3*(x) + y/(x**3))
        N=N+1
        print('Iteration number:',N)
        print('Estimation:',x)
        print('Previous x:',previous_x)
        print()

        if previous_x is not None:
            if abs(x - previous_x) < 0.0001:
                final=1
                print('Difference negligible')
                print('Final Estimation:',x)
                return

    previous_x = x

    if final!=1:
        print(previous_x)

然后在名为script.py的主模块中,将每个模块导入顶部的单独命名空间,并分别引用它们:

import CubedModule as cm 
import FourthModule as fm 

y= int(input('Enter value for estimations:'))
print()

print('Cubed root estimation:')
print()
cm.newtons_cubed(y)

print()
print('Fourth root estimation:')
print()
fm.newtons_fourth(y)