概述
import
和from...import
导入模块
1.import 模块名:
import 首次导入模块发生了3件事:
1.以模块为准创造一个模块的名称空间
2.执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
3.在当前执行文件中拿到一个模块名
模块的重复导入会直接引用之前创造好的结果,不会重复执行模块的文件
import spam as sm
money=1111
sm.money
sm.read1()
sm.read2()
sm.change()
print(money)
导入多个模块:
import spam,time,os
#推荐使用下面方式
import spam
import time
import os
如上的import time,发生的三件事是:
1.开辟内存空间,内存空间命名为time
2.把time.py中的所有代码读入名称空间,然后运行
3.通过time.方法名使用time模块中的方法
time.sleep(10)
2.from模块名import方法名
from spam import money
money=10
print(money)
#如果想导入非常多的方法
from time import* #导入了time模块的所有功能
from...import..首次导入模块发生了3件事:
1.以模块为准创造一个模块的名称空间
2.执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
3.在当前执行文件的名称空间中拿到一个名字,该名字直接指向模块中的某一个名字,意味着不用加任何前缀而直接使用
优点:不用加前缀,代码更精简
缺点:容易与当前执行文件中名称空间的名字冲突
from time import sleep
1.开辟内存空间,内存空间命名为time
2.把time.py中的所有代码读入名称空间,然后运行
3.把sleep()读入import和from..import.py中,因此可以直接使用方法名
以上两种方法的异同:
相同点:1.两者都会执行模块对应的文件,两者都会产生模块的名称空间
2.两者调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关
不同点:import需要加前缀,from...import不需要
自定制模块可以分文件存储代码,函数与函数之间分开,不同模块干不同的事情
import testt
print(testt.abc)
3.模块的搜索路径
内存--》内置--》自定义
import time
import testt
print(testt.abc)
time.sleep(10)
#顺带删掉testt.py
print(testt.abc)
import time
import requests
print(requests.get('http://www.baidu.com'))
time.sleep(15)
print(requests)
4.Python文件的两种用途
一种是执行文件,一种是被当作模块导入
编写好的一个Python文件可以有两种用途:
1.脚本,一个文件就是整个程序,用来被执行
2.模块,文件中存放着一堆功能,用来被导入使用
#aaa.py
x=1
def f1():
print('from f1')
def f2():
print('from f2')
f1()
f2()
#run.py
import aaa
如果直接运行run.py会直接运行aaa.py中的f1()和f2(),但是如果我们在aaa.py中加上if __name__ == '__main__':
这句话,则可以防止
运行run.py时执行f1()和f2()。
#aaa.py
x=1
def f1():
print('from f1')
def f2():
print('from f2')
if __name__ == '__main__':
f1()
f2()
5.循环导入
#m1.py
def f1():
from m2 import y
print('m1',x,y)
x=10
f1()
#m2.py
def f2():
from m1 import x
print('m2',x,y)
y=20
f2()
在m1中运行m2,打印m1
在m2中运行m1,打印m2
运行完在m2中找y,m1模块没有条件了,直接打印m1
模块只能开辟一次。
转载于:https://www.cnblogs.com/lidandanaa/p/11592483.html
最后
以上就是贤惠茉莉为你收集整理的9.26 总结的全部内容,希望文章能够帮你解决9.26 总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复