python调用自己写的py文件
目录
python如何调用自己写的py文件呢?
如果是不同目录怎么调用呢?
如果需要调用的多个文件在多个目录呢?
关于__init__.py的解释
关于sys.path的解释
python如何调用自己写的py文件呢?
同一个目录下直接写import xx就好了,xx为自己要调用的模块名字,虽然会有下划线报错,其实,没有错,仍然可以调用,之前一直都被报错吓住了
如果是不同目录怎么调用呢?
那就把需要调用的那个目录添加一下,比如调用C:\xxx\a.py
那就添加一下c:\xxx路径(windows的路径和linux的路径符号不同\\,/,注意区别)
然后import a就行了,前面写r是为了告诉python这是路径,别把\n等特殊组合给转译了,
如果同c:\xxx目录下有多个文件,比如a.py,b.py等等,也可以直接导入了,因为这是告诉python去这个文件夹寻找包文件
import sys
sys.path.append(r"C:\xxx")
import a
import b
如果需要调用的多个文件在多个目录呢?
当然可以多次写sys.path.append(r"C:\xxx")来添加多个目录,
但是这样很麻烦,如果文件距离很近,比如这样就没有必要写
解决方法是添加一个空的__init__.py文件(用于定义包的属性和方法,可以为空),表示这是一个包,比如这样,声明了aaa为一个包,a是内部的方法
也可以这样,表示bbb是一个包,bb是bbb的子包,b是bb包的内部的方法
然后如果你需要调用a.py与b.py,就可以
testcode.py
import aaa.a
import bbb.bb.b
import ccc.c
如果你在c.py文件,想要调用a.py,b.py只需要用到步骤2的知识即可,比如
c.py
import sys
#添加上级目录
sys.path.append("..//")
import aaa.a
import bbb.bb.b
关于__init__.py的解释
作用是将文件夹变为一个Python模块,导入包时,事实上是导入了它的__init__.py文件
__init__.py 文件可以为空,但是也可以添加如下两个功能
1.初始化包中各个模块,批量导入
pack包,配置__init__.py
import a
import b
导入pack包
访问__init__.py文件中的引用文件,需要加上包名
import pack
print(pack.a,pack.b)
2.__init__.py中的__all__,全部导入所声明的模块
此时导入pack包就相当于导入了a.py,b.py,c.py
pack包,配置__init__.py
__all__ = ['a', 'b', 'c']
调用
from pack import *
关于sys.path的解释
当导入模块时,解释器按照sys.path列表中的目录顺序来查找文件。
print(sys.path)
会打印出一个list列表,表示引入文件时查找的文件目录,第一个元素空字符表示当前目录
关于pyc与pyo文件
pyc就是py编译时生成的字节码文件,以后每次导入都会执行pyc,当py文件更新时pyc也会更新
如果解释器添加-o命令,py编译时会生成pyo文件,它相比pyc去掉了断言(assert)、断行号以及其他调试信息,运行速度更快
如果使用-OO选项,生成的pyo文件会忽略文档信息
模块导入时内部的原理
import可导入的对象可以是以下类型:
模块文件(.py文件)
C或C++扩展(已编译为共享库或DLL文件)
包(包含多个模块)
内建模块(使用C编写并已链接到Python解释器中)
理解为后缀就是.py、.pyo、.pyc、.pyd、.so、.dll
解释器工作:
1.根据导入的文件名创建命名空间(用来访问文件内部属性与方法)
2.在命名空间内执行源代码
3.创建一个源代码文件的对象,这个对象引用对应的命名空间,管理模块的内部函数与变量
4.一个模块可以多次导入,但是后面导入的模块只执行第三步
sys.modules可以打印出导入的模块名与模块对象的映射
因此可以理解导入文件的三种方式:
import a.b
把a.b导入全局命名空间,想要调用c方法需要a.b.c
from a import b
把b导入全局命名空间,b.c
from a.b import c
把b的属性c直接导入命名空间
python调用自己写的py文件相关推荐
- python import自己写的.py文件
1. 简单地导入自己写的.py文件 参考:https://jingyan.baidu.com/article/08b6a591810daf14a8092204.html 2. 将自己写的多个.py文件 ...
- python程序导入import、规范化和封装自己写的.py文件
目录 1. 简单地导入自己写的.py文件 2. 将自己写的多个.py文件规范化成外部类,并创建__init__.py 3. 将自己的程序封装成外部包 1. 简单地导入自己写的.py文件 将a.py与b ...
- 让Python每次都import最新.py文件(module)的方法
出于某种执着的原因, 我对python的import+reload机制不太满意. 想想吧: import是一条statement, 连expression都不是, 而reload是一个builtin函 ...
- Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子
Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子 目录 Python打包工具Pyintealler打包py文件为windows exe文件过程 ...
- python多个for的执行顺序-python顺序执行多个py文件
假如我要执行code目录下的python程序,假设该目录下有1.py,2.py,3.py,4.py四个文件,但是我想执行1.py,2.py,4.py,则可在该目录下创建一个python文件,代码如下: ...
- Python如何引用另一个py文件中的变量
Python如何引用另一个py文件中的变量 1.新建一个aa.py文件 2.新建一个bb.py文件 将变量和函数功能分开保存,这样可以简化自己的代码,看起来更简洁也便于维护,今天需要用到录入很多多维l ...
- python函数文档说明调用方式_Python 跨.py文件调用自定义函数说明
0 前言 os.chdir() :用于改变当前python工作的目录到指定的路径 sys.path:是python搜索模块的一个路径集,为list,自定义的包可以把存放路径加进去,之后直接调用包名就行 ...
- python引入自己写的文件_python引入自己写的Py文件
原博文 2020-04-23 23:40 − 1.新建一个test_a.py文件 def print_sum(a,b): if(type(a)==int or type(b) == int): pri ...
- python调用什么函数实现对文件内容的读取_如何使用python语言中的方法对文件进行读写操作...
在我们使用python语言中的文件时,可以使用open()方法打开文件,close()方法关闭文件,read()方法读取文件内容,write()方法写入内容到文件中.下面利用几个实例说明文件读写方法, ...
最新文章
- ADO.NET实用经验(转自代码中国)
- php代码返回404,php--------返回404状态
- python gpu加速 显卡_PyTorch-GPU加速实例
- 典型瀑布模型四个阶段_古典瀑布模型的不同阶段
- web前端之框架(frameset)
- 3年后,基于mysql控制vsftp的用户认证机制
- Luogu P1967 货车运输 倍增+最大生成树
- 算法,PHP取数据库中百万条数据中随机20条记录
- maven解析xml+测试test+注解
- Surface平面计算机
- 开发工具篇 程序员计算器
- 网络安全--通过握手包破解WiFi(详细教程)
- 关于防范ONION勒索软件病毒攻击的解决办法
- 从奥卡姆剃刀定律再看决策树
- 如何做好电商平台的内容运营?
- css3 transition transform属性造成文字抖动
- SQL SERVER数据库误删除误格式化误重装软件覆盖数据恢复修复
- Unity(13)-场景切换,保留资源
- matlab求方程在X附近的根,matlab 实验03 求代数方程的近似根(解)
- powerpoint快速插入多张图片
热门文章
- 计算机技能训练课程,计算机入门及操作技能训练课程设计方案.doc
- linux 传文件夹,linux下上传下载文件夹的方法
- kvm解决1000M网卡问题
- ethtool 开启网卡_ethtool查看网卡以及修改网卡配置
- 国美金融贷款VaR法计算投资风险度,国美金融贷款样本规模正态分布
- oracle 归档日志文件archieve log
- 2017年“嘉杰信息杯” 中国大学生程序设计竞赛全国邀请赛:E—Partial Sum
- 腾讯Java开发面试凉凉,java工程师发展路线
- 实战案例:如何用Word制作收款单
- CE感恩品牌创始人,一个身价过亿的青年企业家