关于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:用来去除开头字符.空白符 ...
随机推荐
- gzip 的使用
bogon:Desktop macname$ mkdir testdir bogon:Desktop macname$ cd testdir/ bogon:testdir macname$ ls bo ...
- Atcoder ABC 139A
Atcoder ABC 139A 题意: 给你两个字符串,记录对应位置字符相同的个数 $ (n=3) $ 解法: 暴力枚举. CODE: #include<iostream> #inclu ...
- JAVA基础知识|堆和栈
一.java六个存储数据的地方 1)寄存器(register):这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配.你不能直 ...
- pwn学习日记Day12 《程序员的自我修养》读书笔记
目标文件里有什么 ELF各段 代码段 text 数据段 data bss段 只读数据段 rodata 注释信息段 comment 堆栈提示段 .note.GNU-stack comment 存放编译器 ...
- MyBatis错误:The server time zone value '?泄???????' is unrecognized or represents more t
原文地址:http://blog.csdn.net/oppo5630/article/details/52162783 解决java.sql.SQLException: The server time ...
- word里快捷输入分割线
- leetcode 96. Unique Binary Search Trees 、95. Unique Binary Search Trees II 、241. Different Ways to Add Parentheses
96. Unique Binary Search Trees https://www.cnblogs.com/grandyang/p/4299608.html 3由dp[1]*dp[1].dp[0]* ...
- SQL-W3School-基础:SQL AND & OR 运算符
ylbtech-SQL-W3School-基础:SQL AND & OR 运算符 1.返回顶部 1. AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤. AND 和 OR 运算符 ...
- Unity3d NavMeshAgent 寻路问题(1)
navMeshAgent调用setDestination 后,会有一个计算路径的时间,计算过程中pathPending为true. 在这个过程中remainingDistance一直为0.
- truffle init Error:连接不到github网址
问题描述: 输入truffle init 输出 Error: Error making request to https://raw.githubusercontent.com/truffle-box ...