• 模块module


    定义:

    模块:用来从逻辑上组织python代码(变量,函数,类,逻辑),本就就是.py结尾的python文件,(文件名:test.py)

    用来逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py文件)

    比如:一个.py的文件即一个模块,对于一个模块test有如下定义:

    模块的文件名:test.py

    模块名:test

    模块导入:import test

    导入方法一:

    比如现在有两个.py文件。其中一个是模块,module_zaizai其中的代码是这样子的:

    name='zaizai'

    def say_hello():

           print('hello zaizai')

    其实这就是一个模块,这个模块中定义了一个变量以及一个函数,分别是name,say_hello。因此我们在其他.py文件下可以调用这个模块。

    另一个.py文件是:

    import module_zaizai       这一步其实是相当于把module_zaizai这个文件给调用过来了,所以调用其里面的变量和函数的时候我们一般,module_zaizai.变量,module_zaizai.函数名()。

    导入方法二:导入多个模块

    import module_name1,module_name2

    导入方法三:

    from module_zaizai import* 导入module_zaizai里面的所有变量函数,但是不建议这么使用,因为其实这个方法的作用其实是相当于把module_zaizai里面的所有代码,复制到了from module_zaizai import*的下面,当想调用模块里的函数的时候,直接say_hello()就可以了。所以当模块里面函数的名字跟该.py文件里面本来的名字一样时,因为python文件是逐行解释的,所以下面的会覆盖上面的,所以不要用。

    这个方法其实是导入了模块里的所有代码,所以当你写module_zaizai.函数名(),的时候,其会显示未定义。

    导入方法四:

    from module_zaizai import logger as logger_zaizai

    这样就能避免重名的情况。这个时候,logger_zaizai()相当于运行module_zaizai里面的logger,其实就是相当于把模块里重名的函数名重新定义了一个不重名的名字。

    导入方法五:

    from module_zaizai import name

    这句代码等价于:

    name='zaizai'

    import的本质(路径搜索和搜索路径):
    import module_zaizai
    其本质是将module_zaizai里面的所有代码运行了一遍,然后将module_zaizai = all code,其实就是将所有的代码赋值给module_zaizai,调用里面的变量,module_zaizai.变量 调用里面的逻辑 module_zaizai.函数()
    包的本质就是一个文件夹或者说是目录,区别是里面含有__init__.py文件,包是用来从逻辑上来组织模块的,因为其下面可以放一堆模块。
    导入包的本质就是解释该包下的__init__.py文件,因为包是一个目录,你不能导入一个目录。
    比如包的名字是package_test,下面有一个__init__.py文件。该文件里面的逻辑是:
    print('from the package package_test') 
    然后在另外一个文件中 import package_test,其实就是相当于运行__init__.py文件
    其就会print出from the package package_test
     
    导入必须在同一目录下
    import module_name----->一定要找到一个 module_name.py的文件-----module_name.py的路径
    ----->sys.path
    当不在同一路径下的时候,我们先
    import sys
    print(sys.path)
    我们会发现这是一个列表。也就是说,这是现在我们能找到的路径都在这个列表之中,所以,我们如果想要导入成功module_zaizai的话,这个模块的路径一定要在这个路径之中。
    os.path.abspath(__file__) 找到当前文件的目录。
    思路:比如我们现在需要导入模块的文件(main.py)和模块文件(module_zaizai.py)都在同一个文件下,这时候直接导入导入不了,怎么办?  上面说到现在的路径是一个列表的形式。 我们可以利用os模块找到需要导入的模块所在的路径,这时候再把这个路径append到这个列表之中,我们就可以导入了。
     
  • 相关阅读:
    EF架构~简洁关联表插入,优越的代码性能!
    基础才是重中之重~你是否真正了解TransactionScope?
    基础才是重中之重~如何整理BLL与DAL层的文件
    java Byte 和byte 差别及byte[ ]和string转换
    转: java的InputStream和OutputStream的理解
    java.awt.list java.util.list 区别
    java.util.Scanner 总结
    java .io OutputStream 与InputStream
    java 3中方法复制一个文件
    网络爬虫 简介
  • 原文地址:https://www.cnblogs.com/zaizaiaipython/p/7889554.html
Copyright © 2020-2023  润新知