关于python中的包,模块导入的问题详解(一)
最近由于初学python,对包,模块的导入问题进行了资料的搜集,查阅,在这里做一个总结:
一: import 模块
在import的过程中发生了什么?我们用一个实验来说明:

以上截图表明:在import + 模块中,直接执行了里面是语句
引申:一个模块不会被重复导入,如果要使用被导入模块的变量,要用 模块.变量名 的方式 。
如果全局空间与模块的局部空间有命名重复的变量名或函数名,则在各自对应的域内去寻找各自的对象
如下代码所示
########file_2.py
print("This is file_2") file_v2 = 'msy' #定义变量
def file_d2(): #定义函数
print("This is file_d2!!!") ########file_1.py
import file_2 #导入模块 print(file_2.file_v2) #使用模块的变量
print(file_2.file_d2()) #使用模块的函数
######起别名需注意的地方 import file_2 as f #####注意:::起了别名以后,原来的名字在当前模块就不能使用了
拓展:按照PeP8开发规范,导入多个模块时,虽然可以一个import可以一次性导入多个模块,但不符合规范,且需按照#内置模块,#第三方模块,#自定义模块
的顺序来导入
- 二:模块搜索路径
##############模块搜索路径 import sys
import os base = os.path.basename(__file__) #当前文件名
base2 = os.path.abspath(__file__) #绝对路径
base3 = os.path.dirname(os.path.abspath(__file__)) #当前文件路径
base4 = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #当前文件上级路径
引申:除了sys.path中是内置,拓展模块外,其他模块都应使用你直接执行这个文件所在的目录作为搜索路径;
一个模块是否能被导入,就看这个模块的所在的目录在不在sys.path中,如下图演示:


- 三:运行py的方式
常用的两种运行方式:1、cmd python xx.py 脚本的方式运行
2、导入他,import xx.py
但大多数情况我们所见到的import 时 并不会有控制台输出,但是cmd运行的时候为什么有输出呢?(pycharm 运行也是脚本运行)
或者如何达到这样的效果呢?
#############实现import调用时不输出代码
if __name__ == __main__:
代码块 #############################
关于python中的包,模块导入的问题详解(一)的更多相关文章
- Python中生成器和yield语句的用法详解
Python中生成器和yield语句的用法详解 在开始课程之前,我要求学生们填写一份调查表,这个调查表反映了它们对Python中一些概念的理解情况.一些话题("if/else控制流" ...
- python中利用队列asyncio.Queue进行通讯详解
python中利用队列asyncio.Queue进行通讯详解 本文主要给大家介绍了关于python用队列asyncio.Queue通讯的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细 ...
- 关于python中的包,模块导入的问题详解(二)
from import导入 紧接着的是from xx import xx 语法 1 ################ 2 from my_moudule import name 3 print(na ...
- python中如何添加模块导入路径?
python中自定义模块导入路径的方式主要有以下3种: (1)使用sys.path.append() 随着程序执行,会动态地添加模块导入的路径,但是程序执行结束后就会立即失效(临时性的) import ...
- python的内置模块xml模块方法 xml解析 详解以及使用
一.XML介绍 xml是实现不同语言或程序直接进行数据交换的协议,跟json差不多,单json使用起来更简单,不过现在还有很多传统公司的接口主要还是xml xml跟html都属于是标签语言 我们主要学 ...
- python接口自动化(九)--python中字典和json的区别(详解)
简介 这篇文章的由来是由于上一篇发送post请求的接口时候,参数传字典(dict)和json的缘故,因为python中,json和dict非常类似,都是key-value的形式,为啥还要这么传参,在群 ...
- Python使用socketServer包搭建简易服务器过程详解
官方提供了socketserver包去方便我们快速的搭建一个服务器框架. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的 ...
- python中的列表(list) 切片详解
1.切片: 通过指定下标的方式来获得某一个数据元素,或者通过指定下标范围来获得一组序列的元素,这种访问序列的方式叫做切片. 访问某一个数据元素的的语法如下: sequence[index] ...
- Python中strip()、lstrip()、rstrip()用法详解
Python中有三个去除头尾字符.空白符的函数,它们依次为: strip: 用来去除头尾字符.空白符(包括\n.\r.\t.' ',即:换行.回车.制表符.空格)lstrip:用来去除开头字符.空白符 ...
随机推荐
- D. Restore Permutation(权值线段树)
D. Restore Permutation time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- Jenkins修改显示语言为中文
1 安装插件 主界面 -> 系统管理 -> 插件管理 -> 可选插件 1.1 安装插件Locale plugin 1.2 安装插件Localization: Chinese(Simp ...
- 20182332 实验一《Linux基础与Java开发环境》实验报告
20182332 实验一<Linux基础与Java开发环境>实验报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 盛国榕 学号:20182332 实验教师:王志强 ...
- java Annotation 注解的使用
源码地址:https://github.com/yylxy/JavaAnnotationTest.git java Annotation 注解的使用 ,代码中有详细的注释.是用AndroidStudi ...
- kotlin中匿名对象
open class MyClass { private fun too()=object { var x : String ="x" } fun publictoo()=obje ...
- 【leetcode】509. Fibonacci Number
problem 509. Fibonacci Number solution1: 递归调用 class Solution { public: int fib(int N) { ) return N; ...
- Flutter Window环境运行(VSCode + 单独运行Android 虚拟机)
官网以及很多网上文章的开发都是基于Android ,因为它能创建不同类型移动设备虚拟机.但个人始终觉得它太庞大,启动慢耗资源,但我们使用Flutter又离不开虚拟机. 经过实践,现在能成功的单独启动移 ...
- 第二章 python之计算机基础
@python基础 零基础就是个幌子,因为零基础什么都干不了. 如果零基础随随便便就把自动化做起来,那自动化测试就不值钱了:因为这种简单的事情,谁都可以做到. 本课程从零基础出发,补足基础后,不仅仅学 ...
- Django:(08)序列化器
1.序列化和反序列化变量从内存中变成可存储或传输的过程称之为序列化,序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上.反过来,把变量内容从序列化的对象重新读到内存里称之为反序列 ...
- DDD不是架构设计方法
DDD不是架构设计方法 一文读懂DDD 2019-05-28 19:18 by 春哥大魔王, 413 阅读, 3 评论, 收藏, 编辑 何为DDD DDD不是架构设计方法,不能把每个设计细节具象化,D ...