zoukankan      html  css  js  c++  java
  • python 模块

    为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。

    使用模块有什么好处?

    最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。

    一般情况下,保存的.py 文件应该在安装文件的默认目录下,这样才可以保证python便捷的调用,例如:

    # hello.py

    def hi():

    print ('hello, everyone!')

    运行后,如果输入hi()会出现什么情况?

    会出现:

    >>> import hello

    >>> hi()

    Traceback (most recent call last):

    File "<pyshell#1>", line 1, in <module>

    hi()

    NameError: name 'hi' is not defined

    正确的输入方法:

    >>> hello.hi()

    hello, everyone!

    原因就是命名空间缺少导致的,加上hello.就ok了

    导入模块

    举例:

    # TemperatureConversion.py

    def c2f(cel):

    fah = cel * 1.8 +32

    return fah

    def f2c(fah):

    cel = (fah - 32)/1.8

    return cel

    第一种: import 模块名

    import TemperatureConversion

    print('32摄氏度 = %.2f华氏度' % TemperatureConversion.c2f(32))

    print('99华氏度 = %.2f摄氏度' % TemperatureConversion.f2c(99))

    第二种: from 模块名 import 函数名

    from TemperatureConversion import c2f,f2c

    print('32摄氏度 = %.2f华氏度' % c2f(32))

    print('99华氏度 = %.2f摄氏度' % f2c(99))

    这样可以省略掉命名空间TemperatureConversion.c2f(32)

    第三种: import 模块名 as 新名字

    import TemperatureConversion as tc

    print('32摄氏度 = %.2f华氏度' % tc.c2f(32))

    print('99华氏度 = %.2f摄氏度' % tc.f2c(99))

    if __name__=='__main__'

    Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败,因此,这种if测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。

    # TemperatureConversion.py

    def c2f(cel):

    fah = cel * 1.8 +32

    return fah

    def f2c(fah):

    cel = (fah - 32)/1.8

    return cel

    def test():

    print('0摄氏度 = %.2f华氏度' % c2f(0))

    print('0华氏度 = %.2f摄氏度' % f2c(0))

    test()

    如果在cale.py调用会出现什么问题呢?

    ========= RESTART: C:/Users/gangn/Desktop/Python/temperature/calc.py =========

    0摄氏度 = 32.00华氏度

    0华氏度 = -17.78摄氏度

    32摄氏度 = 89.60华氏度

    99华氏度 = 37.22摄氏度

    >>>

    所以在写有测试的模块中加入__name__ == ‘__main__’就可以避免在实际执行程序中把测试内容也显示出来,如:

    在test前加入:

    If __name__ == ‘__main__’:

    test()

    搜索路径

    >>> import sys

    >>> sys.path

    ['C:/Users/gangn/Desktop/Python/temperature', 'C:\Users\gangn\AppData\Local\Programs\Python\Python36\Lib\idlelib', 'C:\Users\gangn\AppData\Local\Programs\Python\Python36\python36.zip', 'C:\Users\gangn\AppData\Local\Programs\Python\Python36\DLLs', 'C:\Users\gangn\AppData\Local\Programs\Python\Python36\lib', 'C:\Users\gangn\AppData\Local\Programs\Python\Python36', 'C:\Users\gangn\AppData\Local\Programs\Python\Python36\lib\site-packages'] è 这是系统最好的存放模块地址目录

    >>>

    如果想在自己创建的文件夹作为python包的目录地址执行程序,就需要自己添加搜索路径:

    >>> import TemperatureConversion

    Traceback (most recent call last):

    File "<pyshell#7>", line 1, in <module>

    import TemperatureConversion

    ModuleNotFoundError: No module named ' TemperatureConversion'

    路径添加方法:

    sys.path.append(‘C:\users\gangn\Desktop\Python\temperature’)

    为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

    每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块

    例如:

    在调取包中模块的时候,只需要在函数中加入包名:NN. 如:

    import NN.TemperatureConversion as tc

    print('32摄氏度 = %.2f华氏度' % tc.c2f(32))

    print('99华氏度 = %.2f摄氏度' % tc.f2c(99))

  • 相关阅读:
    html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
    HTMl5的存储方式sessionStorage和localStorage详解
    浏览器文档模式设置
    页面缓存
    SQL Server死锁总结
    读写分离,读写分离死锁解决方案,事务发布死锁解决方案,发布订阅死锁解决方案
    页面缓存
    HTML5 history API,创造更好的浏览体验
    【转】编写高质量代码改善C#程序的157个建议——建议96:成员应优先考虑公开基类型或接口
    【转】编写高质量代码改善C#程序的157个建议——建议95:避免在构造方法中调用虚成员
  • 原文地址:https://www.cnblogs.com/gzyxy/p/11814345.html
Copyright © 2011-2022 走看看