Python基础教程之import和from...import,,一般使用import


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

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

‘‘‘遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!‘‘‘# spam.pyprint(‘from the spam.py‘)money = 1000def read1():    print(‘spam模块:‘, money)def read2():    print(‘spam模块‘)    read1()def change():    global money    money = 0

一、import 模块名

# run.pyimport spam  # from the spam.pyimport spam

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

以模块为准创造一个模块的名称空间执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间在当前执行文件中拿到一个模块名

模块的重复导入会直接饮用之前创造好的结果,不会重复执行模块的文件,即重复导入会发生:spam=spam=模块名称空间的内存地址

‘‘‘遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!‘‘‘# run.pyimport spam as smmoney = 111111sm.moneysm.read1()  # ‘spam模块:1000‘sm.read2sm.change()print(money)  # 1000

导入多个模块

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

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

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

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

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

导入文件内所有的功能:

‘‘‘遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!‘‘‘# spam.py__all__ = [‘money‘, ‘read1‘]  # 只允许导入‘money‘和‘read1‘# run.pyfrom spam import *  # 导入spam.py内的所有功能,但会受限制于__all__

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

相同点:

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

不同点

import需要加前缀;from...import...不需要加前缀

Python基础教程之import和from...import

评论关闭