Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何抑制导入模块中的输出_Python_Numpy_Output - Fatal编程技术网

Python 如何抑制导入模块中的输出

Python 如何抑制导入模块中的输出,python,numpy,output,Python,Numpy,Output,我有一个模块,有一种方法: def find_inverse_matrix(C, log=False): n = C.shape[0] Cs = C.copy() i = 0 C = np.matrix(np.eye(n)) B = np.matrix(np.eye(n)) J = set(range(n)) S = [0] * n if log: print Cs while i <= n-1:

我有一个模块,有一种方法:

def find_inverse_matrix(C, log=False): 

    n = C.shape[0]

    Cs = C.copy()
    i = 0
    C = np.matrix(np.eye(n))
    B = np.matrix(np.eye(n))
    J = set(range(n))
    S = [0] * n

    if log: print Cs

    while i <= n-1:
        if log: print '\nIteration', i
        f = False
        j = 0
        ei = get_ek(i, n)

        for j in J:
            cj = get_ck(Cs, j)
            alpha = (ei * B * cj)[0, 0]
            if log: print 'alpha%s = %s' % (j, alpha)
            if not(is_zero(alpha)):
                f = True
                break

        if not(f):
            exit('Inverse matrix is not exist')

        J.remove(j)
        S[j] = i
        C[:, i] = Cs[:, j]
        if log: print 'C%s:\n%s' % (i, C)
        D = get_Dkz(i, B * C[:, i])
        if log: print 'D%s:\n%s' % (i, D)
        B = D * B
        if log: print 'B%s:\n%s' % (i, B)

        i += 1
    if log: print '\n S = ', S

    if log: print 'Result'
    R = construct_matrix(B, S)
    if log: print R

    if log: print '\nCheck result:'
    if log: print Cs * R
    return R
def find_inverse_矩阵(C,log=False):
n=C.形状[0]
Cs=C.copy()
i=0
C=np.矩阵(np.眼(n))
B=np.矩阵(np.眼(n))
J=设定值(范围(n))
S=[0]*n
如果日志:打印Cs

正常情况下,
print
是该语言中的语句。但是,如果您将来自uuu future uuuu import print_函数的行
添加到您的导入中,则它将用作函数。这意味着两件事:

a) 您需要将其用作一个函数,即
print(Cs)
而不是
print Cs

b) 您可以重写它,因为在python中,函数是可以使用的对象

您可以定义自己的“my_print”函数,以后可以对其进行更改,而不必使用内置的
print

例如:

>>> from __future__ import print_function
>>> _print_ = print
>>> def myprint(*arg, **kwarg):
...     _print_("yeah.")
...     _print_(*arg,** kwarg)
...
>>> myprint("ok")
yeah.
ok
>>> print = myprint
>>> print('3')
yeah.
3
>>>

因此,只需编写您的
myprint
函数,这样它就可以在之前检查“log”,并且您的打印应该是相同的。或者仅当您不想禁止打印时才覆盖
print

通常,
print
是该语言中的语句。但是,如果您将来自uuu future uuuu import print_函数的行
添加到您的导入中,则它将用作函数。这意味着两件事:

a) 您需要将其用作一个函数,即
print(Cs)
而不是
print Cs

b) 您可以重写它,因为在python中,函数是可以使用的对象

您可以定义自己的“my_print”函数,以后可以对其进行更改,而不必使用内置的
print

例如:

>>> from __future__ import print_function
>>> _print_ = print
>>> def myprint(*arg, **kwarg):
...     _print_("yeah.")
...     _print_(*arg,** kwarg)
...
>>> myprint("ok")
yeah.
ok
>>> print = myprint
>>> print('3')
yeah.
3
>>>

因此,只需编写您的
myprint
函数,这样它就可以在之前检查“log”,并且您的打印应该是相同的。或者只在您不想禁止打印时覆盖打印。

如果uuu name\uuuu=='\uuuu main\uuuu':
仅在直接执行文件而不是作为模块加载时才会执行代码块。您可以在那里设置一个标志以打开日志记录


一种更具python风格的方法可能是将日志函数而不是标志传递到模块中。通过这种方式,您可以传入一个空函数来禁止日志记录。

如果uuuu name\uuuuu=='\uuuuuuu main\uuuu':
仅在直接执行文件而不是作为模块加载时才会执行代码块。您可以在那里设置一个标志以打开日志记录


一种更具python风格的方法可能是将日志函数而不是标志传递到模块中。这样,您就可以传入一个空函数来禁止日志记录。

谢谢您的帮助。我知道日志模块,但目前该模块已经编写了“打印”语句。感谢您的进步。我知道日志模块,但目前该模块已经使用“print”语句编写。在这种情况下,我只需要修改导入的模块,对吗?参见示例,输出位于底部?然后它给了你想要的结果,对吗?在这种情况下,我只需要修改导入的模块,对吗?参见示例,输出位于底部?然后它给了你想要的结果,对吗?