欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

import和from...import

发布时间:2025/5/22 编程问答 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 import和from...import 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

目录

  • 一、import 模块名
  • 二、from 模块名 import 具体的功能
  • 三、import和from...import...的异同

一般使用import和from...import...导入模块。

以下述spam.py内的文件代码为例。

# spam.py print('from the spam.py')money = 1000def read1():print('spam模块:', money)def read2():print('spam模块')read1()def change():global moneymoney = 0

一、import 模块名

# run.py import spam # from the spam.py import spam

import首次导入模块发生了3件事:

  • 以模块为准创造一个模块的名称空间
  • 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
  • 在当前执行文件中拿到一个模块名
  • 模块的重复导入会直接饮用之前创造好的结果,不会重复执行模块的文件,即重复导入会发生:spam=spam=模块名称空间的内存地址

    # run.py import spam as smmoney = 111111sm.money sm.read1() # 'spam模块:1000' sm.read2 sm.change()print(money) # 1000

    导入多个模块

    import spam, time, os# 推荐使用下述方式 import spam import time import os

    二、from 模块名 import 具体的功能

    # run.pyfrom spam import moneymoney = 10print(money) # 10

    from...import...首次导入模块发生了3件事:

  • 以模块为准创造一个模块的名称空间
  • 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
  • 在当前执行文件的名称空间中拿到一个名字,该名字直接指向模块中的某一个名字,意味着可以不用加任何前缀而直接使用
    • 优点:不用加前缀,代码更加精简
    • 缺点:容易与当前执行文件中名称空间中的名字冲突

    导入文件内所有的功能:

    # spam.py__all__ = ['money', 'read1'] # 只允许导入'money'和'read1' # run.py from spam import * # 导入spam.py内的所有功能,但会受限制于__all__

    三、import和from...import...的异同

    相同点:

  • 两者都会执行模块对应的文件,两者都会产生模块的名称空间
  • 两者调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关
  • 不同点

  • import需要加前缀;from...import...不需要加前缀
  • 转载于:https://www.cnblogs.com/nickchen121/p/10802052.html

    总结

    以上是生活随笔为你收集整理的import和from...import的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。