作者回复: 包的概念涉及了文件系统和目录结构,为了照顾更多的初学者,减轻对模块的认知负担,这里的讲解我弱化了包的概念; 包是使用“.模块”的模块命名空间,例如视频里面讲解的os.path,sys.path这种方式,os和sys就是包,这两个path就是模块;使用包和模块可以有两种方式, 即 import 包.模块 、 from 包 import 模块,从上面两个同名的path不难发现,如果程序需要使用这两个模块,而且能够区分他们的话,就要使用import方式,包的作用就体现在引用和运行时能够对他们的一个区分。 还有一种特殊情况就是包里还有一个包,即子包:包在文件系统上面是一个目录形式,有时候有需求要在目录下再编写目录—子包,这种情况下就要用到 from 包 import 子包 的形式,引用子包里面的模块(以.py结尾的文件)就要使用 子包.模块的形式来使用这些模块了。 在早期的Python2中包还有一个文件要学习,这个文件叫做__init__.py,用于包中的子包和模块的搜索功能,在Python3中这个文件也可以省略了。 希望这些包的相关知识能够扩展你对模块的理解。更多请参考官方文档: https://docs.python.org/3/tutorial/modules.html#packages
作者回复: python的模块有一个搜索路径,通过下面的方法可以查看 import sys print(sys.path) 如果你的mymod.py 没有在下面的路径里面就找不到mymod这个模块了
作者回复: sys.path 记录了模块的加载顺序,如果自定义和内置模块重名,当import 一个模块时,会依次的在以上路径顺序中查找,找到了就不再往后找了,找不到就导入异常,只搜索指定目录,不递归搜索
作者回复: 方法比较多,比如增加模块搜索路径,使用相对路径,多个库封装到一个包中... ... 我提供一个最常用的增加模块搜索路径的方法给你,它的用法如下: import sys sys.path.append('不同目录的其他模块路径') 其他方法可以参考如下地址来尝试一下: https://www.python.org/dev/peps/pep-0328/#id1
作者回复: 在python也是类,只是放在了一个单独的文件中
作者回复: import 33module1 ^ SyntaxError: invalid syntax 按照报错信息应该是书写错误
作者回复: 一、 要使用modmy.print_me() 来调用啊 二、另一种方法是: from modmy import print_me print_me()
作者回复: 当然可以了,那问题就转化为怎么把别的文件引入当前的脚本文件,可以使用import 来实现的