Python在导入到另一个模块时打印所有表单模块

时间:2013-03-19 19:41:35

标签: python python-module python-import

我有2个文件。

  1. funcattrib.py
  2. test_import.py
  3. funcattrib.py

    import sys
    
    def sum(a,b=5):
        "Adds two numbers"
        a = int(a)
        b = int(b)
        return a+b
    
    sum.version = "1.0"
    sum.author = "Prasad"
    k = sum(1,2)
    print(k)
    
    print("Function attributes: - ")
    print("Documentation string:",sum.__doc__)
    print("Function name:",sum.__name__)
    print("Default values:",sum.__defaults__)
    print("Code object for the function is:",sum.__code__)
    print("Dictionary of the function is:",sum.__dict__)
    
    #writing the same information to a file
    
    f = open('test.txt','w')
    f.write(sum.__doc__)
    f.close()
    print("\n\nthe file is successfully written with the documentation string")
    

    test_import.py

    import sys
    from funcattrib import sum
    
    input("press <enter> to continue")
    
    a = input("Enter a:")
    b = input("Enter b:")
    f = open('test.txt','a')
    matter_tuple = "Entered numbers are",a,b
    print(matter_tuple)
    print("Type of matter:",type(matter_tuple))
    matter_list = list(matter_tuple)
    print(list(matter_list))
    finalmatter = " ".join(matter_list)
    print(finalmatter)
    f.write(finalmatter)
    f.close()
    print("\n\nwriting done successfully from test_import.py")
    

    我从sum导入了funcattrib.py个功能。当我尝试执行test_import.py时,我看到整个funcattrib.py的输出。我只是想使用sum函数。

    请告知,我在做什么错误,或者是否有其他方法导入模块而不实际执行它?

2 个答案:

答案 0 :(得分:4)

导入时执行模块“顶级”中的所有语句。

不希望希望这种情况发生,您需要区分用作脚本的模块和模块。使用以下测试:

if __name__ == '__main__':
    # put code here to be run when this file is executed as a script

将其应用于您的模块:

import sys

def sum(a,b=5):
    "Adds two numbers"
    a = int(a)
    b = int(b)
    return a+b

sum.version = "1.0"
sum.author = "Prasad"

if __name__ == '__main__':
    k = sum(1,2)
    print(k)

    print("Function attributes: - ")
    print("Documentation string:",sum.__doc__)
    print("Function name:",sum.__name__)
    print("Default values:",sum.__defaults__)
    print("Code object for the function is:",sum.__code__)
    print("Dictionary of the function is:",sum.__dict__)

    #writing the same information to a file

    f = open('test.txt','w')
    f.write(sum.__doc__)
    f.close()
    print("\n\nthe file is successfully written with the documentation string")

答案 1 :(得分:2)

Python始终从上到下执行。函数定义是可执行代码,与其他任何东导入模块时, all 将运行该模块顶层的代码。 Python必须运行它,因为函数是代码的一部分。

解决方案是保护您不希望在if __name__=="__main__"块下导入时运行的代码:

if __name__ == "__main__":
     print("Some info")
相关问题