--------------------------------python文件的两种用途----------------------------------

py文件的两种用途:

1、直接运行

print(__name__)

当文件被当作脚本直接执行时,__name__值为"__main__"

2、被当作模块导入

print(__name__)

当文件被当作模块导入时,__name__值为"模块名"

if __name__ == '__main__':

print("文件被当作脚本执行时要做的事情")

f1()

f2()

----------------------------------模块的搜索所路径与查找优先级----------------------------------

一:模块的搜索路径与查找优先级

(1) 先从内存中已经导入的模块里找

import mmm

mmm.f1()

import time

time.sleep(15)

print('='*50)

import mmm

mmm.f1()

(2) 然后再查找内置的模块

查看解释器内置的模块

import sys

print(sys.modules)

查看解释器的环境变量

import sys

print(sys.path)

当前执行文件所在的文件夹

import logging

print(logging)

(3) 最后去sys.path列表中存放的多个文件夹里依次检索

append方式是临时加一个python的环境变量

示例1:

import sys

print(sys.path)

sys.path.append(r'D:\python全栈15期\aaa\bbb')

import ccc

ccc.f1()

示例2:

import sys

print(sys.path)

import aaa.bbb.ccc as c

c.f1()

from aaa.bbb import ccc

ccc.f1()

主文件 是程序执行的入口

最先从 当前执行程序所在的文件夹下面找,也即从 内存开始找, 优先级最高

划分文件是为了方便管理

运行时 这些划分出去的文件,都是在主文件中运行的

后续文件 所参考的环境变量 都参考主文件所在的文件路径

所及需要手动添加整个项目的根目录路径,以便能找到 项目中下属的所有文件

----------------------------------避免循环导入(涉及递归调用)----------------------------------

破坏 循环导入(循环导入:互相等待对方手中的资源):一方先主动给出自己手中的值

如此便需要调整 本模块中的值 和调用语句之间的顺序

最佳解决方案: 涉及循环导入的 ,把导入语句放到函数中取

因为在外部调用函数时,调用模块中的所有名字都已经完成了赋值,可以直接取用

m1.py文件代码-------------

print('正在导入m1')

def f1():

from m2 import y

print(x,y)

x='m1'

m2.py文件代码--------------

print('正在导入m2')

def f2():

from m1 import x

print(x,y)

y='m2'

run.py文件代码------------

x=1

# import m1

# print(m1.x)

# print(m1.y)

# m1.f1()

import m2

m2.f2()

----------------------------------------模块化程序开发--------------------------------------

package(包) 其实就是文件夹

压缩包和文件的作用一样,都能用来存放文件

查看解释器的环境变量

import sys

print(sys.path)

# ['E:\\workplace_python', 'E:\\workplace_python', 'E:\\ruanjian\\Python\\Python36\\python36.zip', 'E:\\ruanjian\\Python\\Python36\\DLLs', 'E:\\ruanjian\\Python\\Python36\\lib', 'E:\\ruanjian\\Python\\Python36', 'E:\\ruanjian\\Python\\Python36\\lib\\site-packages']

# 工作台的路径 也被自动加入到python路径中

用户名写到 环境变量,在程序的任何位置都能使用

python中的两大环境变量

sys.path:到模块

os.environ 【这其实是一个字典】 存储想要给全局看的数据,在程序的任何位置都能看到 比如 用户名这种信息

拓展:

windows系统中的环境变量:在window系统中,全局有效,快速找值

python中的环境变量:在python程序中,全局生效,快速找值

获取当前 文件/文件夹 所在的文件夹的路径

import os

__file__ 当前文件的路径(带文件名)

print(__file__) # D:\python全栈15期\day17\ATM\conf\settings.py

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) # D:\python全栈15期\day17\ATM\

# 获取当前 文件/文件夹 所在的文件夹的路径

导入模块的两种方式及其区别:

1、import xxx

在当前路径下 (查找)导入 xxx

2、from xxx import xxx

在当前路径下 从 xxx文件夹 (查找)导入xxxx

强调:被调用文件 在未明确指明路径的情况下,使用的路径 参照的都是 主文件的路径

日志使用:

每执行一个操作,都调用了记录日志的方法,将进行的操作行为,写入日志

-----------------------------------补充----------------------------------

名称空间相关强调:

定义的时候 名称空间中 就已经有这个名字(变量名、函数名等各种名字)了,顺序执行程序的时候才为这些 名字依次赋值

(只有被赋值的名字才能被使用。没有被赋值的名字不能被使用,否则程序报错)

扫描语法 中的主要做法:只扫描目标空间中有没有这个名字

执行过程 中的主要做法:若这些用到的名字 没有被赋值,则使用时报错

C语言中的变量机制 与 python中的变量机制有很大不同,要区别看待,不可进行相同处理

python中重视 绑定 , 即 名 和 值 放在不同的内存空间中,通过绑定起来进行取值

全局名称空间 其实也就是 文件级的名称空间(一个.py文件执行时,创建一个自己的全局名称空间)

程序中只有一个内置的名字空间

在它之下可有多个全局名字空间

平衡 ,以XXX换XXX,时间换空间、复杂性与效率性

文件路径(文件所在的路径,带自己的名字)

文件夹路径(文件/文件夹 本身所在的文件夹的路径,不带自己的名字)

import os : os是 程序 与 操作系统 交互的模块

调用操作系统os提供的功能

import sys: sys是 程序 与 解释器 交互的模块

调用python解释器提供的功能

python程序开发模块化_python-17-Python文件两种用途、模块化程序开发相关推荐

  1. php 公众号打开小程序,微信公众号图文消息新增两种进入小程序的方式

    终于不再是凌晨--就在刚刚,微信宣布小程序的能力再次升级.除了添加小程序卡片外,公众号图文消息新增两种进入小程序的方式:支持通过蓝色文字链接或图片链接跳转到小程序. 1.推送形式更多样 公众号运营者在 ...

  2. python画素描画_Python素描画的两种程序解析

    用python画素描画方式有多种,这里给大家分享常见的且操作简单的两种实现方式,一种用pillow库,一种用opencv库,这两个库的具体使用可百度,网上很多教程,这里不再赘述. 一.pillow实现 ...

  3. python字符串成熟编码_python字符串转公式两种方法获取网页编码python版

    在web开发的时候我们经常会遇到网页抓取和分析,各种语言都可以完成这个功能.我喜欢用python实现,因为python提供了很多成熟的模块,可以很方便的实现网页抓取. 但是在抓取过程中会遇到编码的问题 ...

  4. python安装gdal包_python安装gdal的两种方法

    1.不用手动下载文件,直接执行以下命令即可 conda install gdal 2.首先,下载gdal的whl文件  链接, 官网下载比较慢,GDAL-2.2.4-cp27-cp27m-win_am ...

  5. python 并发执行命令_python: 多线程实现的两种方式及让多条命令并发执行

    一 概念介绍 Thread 是threading模块中最重要的类之一,可以使用它来创建线程.有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法:另一种是创建一个threading. ...

  6. python opencv 裁剪图片_Python图片裁剪的两种方式——Pillow和OpenCV

    在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还有一种利用了OpenCV.两种方式都需要简单的几行代码,这可能也就是现在Python那么流行的原因吧. OpenCV ...

  7. python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)...

    一.模块的循环导入问题 run.py # import m1 # 第一次导入 m1.py # 错误示范 ''' print('正在导入m1') from m2 import y #第一次导入m2 x= ...

  8. python import sql脚本_13-模块介绍-import两种方式-py文件的两种用途-模块搜索路径-项目开发的目录规范...

    1.模块的介绍与使用模块import 1.1.模块的介绍 1.1.1.什么是模块? 模块就是一组功能的集合体,我们的程序可以导入模块来复用模块里的功能.在python中,模块的使用方式都是一样的,但其 ...

  9. 模块的四种形式 模块的调用 循环导入问题 模块的搜索路径 py文件的两种用途 编译python文件 包...

    目录 模块的四种形式 什么是模块 模块的四种形式 自定义模块 第三方模块 内置模块 包 使用模块的好处 模块的调用 循环导入问题 模块的搜索路径 py文件的两种用途 编译python文件 包 什么是包 ...

最新文章

  1. 在C语言中break语句称为,在C语言中,break语句的功能是退出函数
  2. 身份证校验原理和PHP实现
  3. 做个游戏:设计代码生成特定的调用堆栈
  4. 以下python语言关键字在异常处理_【单选题】以下 Python 语言关键字在异常处理结构中用来捕获特定类型异常的选项是: ( )...
  5. 如何分析常见的TCP问题?
  6. Visual Studio Code打开项目
  7. C++ typedef小结(转载)
  8. Bind variables in 'in' condition(在in中动态的绑定参数(参数个数可变))
  9. 计算机应用水平考试dream,2016年职称计算机Dreamwaver使用教程:操作环境
  10. javaWeb基于SSM框架学生信息管理系统项目完整源码附带部署教程
  11. 数据仓库之元数据管理
  12. WinPcap vs Npcap
  13. C#条形码图像生成库
  14. 在Excel如何根据内容自动调整行高列宽
  15. 下一个大危机,会是什么?
  16. android 支付sdk ----libPaySdk
  17. katago安装使用
  18. swagger添加权限验证,swagger安全控制
  19. 本地的registry图形化界面harbor安装与使用--02
  20. 软件测试项目管理系统(STM)

热门文章

  1. 赵童鞋带你入门PHP(六) ThinkPHP框架入门
  2. ASA防火墙外部web应用端口与默认审查协议相冲突的解决方法
  3. 设计模式系列-组合模式
  4. 网络爱好者必知的国内十大知名Linux系统版本
  5. java静态内部类了解一下
  6. MemCached配置与缓存知识概述
  7. 理解SQL SERVER中的逻辑读,预读和物理读
  8. PHP.ini 中的错误提示
  9. linux nameserver导致的故障
  10. 数据库(分库分表)中间件对比