模块

# 模块是什么?
# 模块是一系列功能的集合体
# python中一个函数就是功能
# 可以是自己定义的,也可以是别人定义好的
# 一个python文件就是一个模块

# 常见的模块形式:
# 一个moudle.py文件就是一个模块 文件名是 moudle.py 模块名是 moudle
# 模块的分类:
# 自定义的模块(第三方的模块)
# 一个包含有__init__.py的文件夹也是模块
# 内置模块(c语言写的,然后连接到python解释器中)
# 已经编译为DLL或C++

# 如何定义模块?
# 创建一个py文件 把功能写到文件中


# 为什么要用模块
# 1.用第三方的或者内置的模块是一种拿来主义,可以极大地提升开发效率
# 2.自定义模块即将我们自己程序中需要用到的公共的功能写入一个python文件中
# 然后程序的各部分组件可以通过导入的方式来引用/重用自定义模块中的功能

# 如何使用模块?
# 导入的方式有两种:
# import 模块名

# from 模块名 import 具体的功能

# 当执行import时做了什么?

——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
run.py

# 当前执行的文件
x=1
y=2
# 首次导入模块发生了:
# 1.以模块为准创造一个模块的名称空间
# 2.会执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
# 3.在当前执行文件中拿到一个模块名
# import spam
#
# money=99999
# spam.read1()
# 指名道姓的访问某一个功能

# 之后的重复导入会直接引用之前创造好的结果,不会重复执行模块的文件
# import spam#spam=spam=模块名称空间的内存地址

# 起个别名
# import spam as sm
# sm.change()
# print(sm.money)

# 在一行当中一次性导入多个模块
# import time,spam,os,sys
#
# import time
# import os
# import sys

# from ... import ...与import的导入模块

# 优点:不用加前缀,代码更为精简
# 缺点:容易与当前执行文件中名称空间中的名字冲突

# 相同点:
# 1.都会执行模块对应的文件
# 2.调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关

# 不同点
# 一种需要加前缀,一种不需要加前缀

# 首次导入模块发生了:
# 1.以模块为准创造一个模块的名称空间
# 2.会执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
# 3.当前执行文件中拿到一个名字,改名字直接指向模块中的某一个名字,
# 意味着可以不用加任何前缀就可以直接使用
x=1
y=2
# from spam import money,read1
# print(money)
# print(read1)

____________________________________________________________________________________________________________________________________
spam.py


# 被导入的模块

print('from the spam.py')

money=1000

def read1():
print('spam模块:',money)

def read2():
print('spam模块')
read1()

def change():
global money
money=0
___________________________________________________________________________________________________________________
模块循环问题

# 被导入模块m1
print('正在执行m1.py')
# from m2 import x
# y='m1'




# def func1():
# from m2 import x
# print(x)
# y='m1'


y='m1'
from m2 import x




# 被导入模块m2
print('正在执行m2.py')
# from m1 import y
# x='m2'

# def func2():
# from m1 import y
# print(y)
#
# x='m2'


x='m2'
from m1 import y



# 执行文件run1

# import m1
#
#
# m1.func1()

# import m2
# m2.func2()



import m1

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

# 模块的搜索路径.py
# 一个py文件就是一个模块,在导入时必须从某一个文件夹下找到该py文件
# 模块的搜索路径指的就是在导入模块时需要检索的文件夹们


# 文件夹dior 模块 mmm.py
# import mmm
# mmm.f1()

# 导入模块时查找模块的顺序是:
# 1.先从内存中找已经导入的模块中寻找
# 2.内置的模块
# 3.环境变量sys.path中找
# 强调:sys.path的第一个值是当前执行的所在的文件夹

# import sys
# print(sys.path)
#
# 存了一堆路径,
#

# import time
# import mmm
#
# time.sleep(10)
# import mmm
#
# mmm.f1()

# import time
# print(time)


# 处理环境变量
# import sys
# # print(sys.path)
# sys.path.append(r'D:\zrg\day17\dior')
# print(sys.path)
# import mmm
# mmm.f1()


# from dior import mmm
# mmm.f1()


def f1():
print('from f1')


# import sys
# print(sys.path)


——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————-————————

# python文件的执行的两种方式
# 1.右键run直接运行,可以当做脚本文件去运行
# x=1
#
# def f1():
# print('from f1')
#
# def f2():
# print('from f2')
#
# f1()
# f2()

# 2.作为模块导入

import aaa
aaa.f1()
aaa.f2()

aaa.py
def f1():
print('from f1')

def f2():
print('from f2')

print(__name__)
#在aaa.py被直接执行的时候__name__== '__main__'
# 在aaa.py被直接执行的时候调用f1跟f2
# f1()
# f2()

# 在aaa.py被当做模块导入的时候__name__== 'aaa'
# 在aaa.py被当做模块导入的时候不调用f1跟f1

if __name__ == '__main__':
f1()
f2()













转载于:https://www.cnblogs.com/zhangrenguo/p/9774237.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值