Python的import和from

在Python的学习中,模块是相当重要的,模块是最高级别的程序组织单元,它将程序代码和数据封装起来以便重用。

模块至少有三个作用:

1.代码重用

模块可以在文件中永久保存代码,可以任意次数地重新载入和重新运行

2.系统命名空间的划分

模块在Python中是最高级别的程序组织单元,但从根本上讲,它们不过是变量名的软件包。模块将变量名封装进了自己包含的软件包,这一点可以避免变量名的冲突。

3.实现共享服务和数据

从操作的角度来看,模块对实现跨系统共享的组件是很方便的,而且只需要一个拷贝即可。例如,如果你需要一个全局对象,这个对象会被一个以上的函数或文件使用,你可以将它编写在一个模块中一边能够被多个客户端导入。

那么,既然模块如此有用且高效,那么如何在程序中导入和使用它?

Python的导入不仅仅是把一个文件文本插入到另一个文件,还有一些隐藏的操作

第一种:import+模块

%python

>>>import myfile

>>>printf(myfile.title)

上述例子中,你可以看到使用import将myfile模块导入,并且使用了myfile模块中的title属性。

import导入会执行三个操作

1.找到模块文件

Python会使用标准模块搜索路径查找import所引用的模块文件,其路径包括:程序的主目录,PYTHONPATH目录,标准链接库目录以及任何.pth的内容

2.编译成字节码

遍历模块搜索路径,找到符合import语句的源代码文件,如果必要的话,Python接下来会将其编译成字节码。

Python会检查文件的时间戳,如果发现字节码文件比源代码文件旧,就会在程序运行时自动重新生成字节代码。另一方面,如果发现.pyc字节码不比对应的.py源代码文件旧,就会跳过源代码到字节码的编译步骤。此外,如果Python在搜索路径上只发现了字节码文件,而没有源代码,就会直接加载字节码。

3.运行

import操作的最后步骤是执行模块的字节码。文件中所有语句会依次执行,从头至尾,而此步骤中任何对变量名的赋值运算,都会产生所得到的模块文件的属性。因此,这个执行步骤会生成模块代码所定义的所有工具。

正如你所见,import操作包含了不少操作:搜索文件、或许会运行一个编译器以及执行Python代码,而且任何给定的模块在默认情况下每个进程中只会导入一次。未来的导入会跳过导入的这三个步骤,重用已加载内存内的模块。

第二种:from+模块

%python

>>>from module1 import printer

>>>printer('hello world')

from语句与import有相同的效果,而from语句出现时,导入的变量名会复制到作用域内,在脚本中使用该变量名就可以少输入一些,我们可直接使用变量名,而无须在嵌套模块名称之后。

其实from语句只是扩展了import语句,它照常导入了模块文件,但是多了一个步骤,将文件中的一个或多个变量名从文件中复制出来。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的import和from import是用来导入其他模块的方式。使用import xxx时,表示导入整个模块xxx,可以通过xxx来访问该模块中的函数、类和变量等。\[1\]而使用from xxx import mmm时,表示只导入模块xxx中的特定函数、类或变量mmm,可以直接使用mmm而不需要使用xxx作为前缀。\[2\]另外,使用from xxx.mmm import yyy时,表示从模块xxx的子模块mmm中导入特定函数或类yyy。\[2\]最后,使用from mmm import *时,表示导入模块mmm中的所有函数、类和变量,但不推荐使用这种方式,因为可能会导致命名冲突。\[2\]总结来说,无论是使用import还是from import,都是用来导入模块或模块中的特定函数、类和变量。\[3\] #### 引用[.reference_title] - *1* *3* [Python 中的 import 与 from import 区别](https://blog.csdn.net/skydust1979/article/details/106955139)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Pythonimport和from import的区别](https://blog.csdn.net/jk_101/article/details/112279923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值