目录

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文件相关推荐

  1. python import自己写的.py文件

    1. 简单地导入自己写的.py文件 参考:https://jingyan.baidu.com/article/08b6a591810daf14a8092204.html 2. 将自己写的多个.py文件 ...

  2. python程序导入import、规范化和封装自己写的.py文件

    目录 1. 简单地导入自己写的.py文件 2. 将自己写的多个.py文件规范化成外部类,并创建__init__.py 3. 将自己的程序封装成外部包 1. 简单地导入自己写的.py文件 将a.py与b ...

  3. 让Python每次都import最新.py文件(module)的方法

    出于某种执着的原因, 我对python的import+reload机制不太满意. 想想吧: import是一条statement, 连expression都不是, 而reload是一个builtin函 ...

  4. Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子

    Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子 目录 Python打包工具Pyintealler打包py文件为windows exe文件过程 ...

  5. python多个for的执行顺序-python顺序执行多个py文件

    假如我要执行code目录下的python程序,假设该目录下有1.py,2.py,3.py,4.py四个文件,但是我想执行1.py,2.py,4.py,则可在该目录下创建一个python文件,代码如下: ...

  6. Python如何引用另一个py文件中的变量

    Python如何引用另一个py文件中的变量 1.新建一个aa.py文件 2.新建一个bb.py文件 将变量和函数功能分开保存,这样可以简化自己的代码,看起来更简洁也便于维护,今天需要用到录入很多多维l ...

  7. python函数文档说明调用方式_Python 跨.py文件调用自定义函数说明

    0 前言 os.chdir() :用于改变当前python工作的目录到指定的路径 sys.path:是python搜索模块的一个路径集,为list,自定义的包可以把存放路径加进去,之后直接调用包名就行 ...

  8. 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 ...

  9. python调用什么函数实现对文件内容的读取_如何使用python语言中的方法对文件进行读写操作...

    在我们使用python语言中的文件时,可以使用open()方法打开文件,close()方法关闭文件,read()方法读取文件内容,write()方法写入内容到文件中.下面利用几个实例说明文件读写方法, ...

最新文章

  1. ADO.NET实用经验(转自代码中国)
  2. php代码返回404,php--------返回404状态
  3. python gpu加速 显卡_PyTorch-GPU加速实例
  4. 典型瀑布模型四个阶段_古典瀑布模型的不同阶段
  5. web前端之框架(frameset)
  6. 3年后,基于mysql控制vsftp的用户认证机制
  7. Luogu P1967 货车运输 倍增+最大生成树
  8. 算法,PHP取数据库中百万条数据中随机20条记录
  9. maven解析xml+测试test+注解
  10. Surface平面计算机
  11. 开发工具篇 程序员计算器
  12. 网络安全--通过握手包破解WiFi(详细教程)
  13. 关于防范ONION勒索软件病毒攻击的解决办法
  14. 从奥卡姆剃刀定律再看决策树
  15. 如何做好电商平台的内容运营?
  16. css3 transition transform属性造成文字抖动
  17. SQL SERVER数据库误删除误格式化误重装软件覆盖数据恢复修复
  18. Unity(13)-场景切换,保留资源
  19. matlab求方程在X附近的根,matlab 实验03 求代数方程的近似根(解)
  20. powerpoint快速插入多张图片

热门文章

  1. 计算机技能训练课程,计算机入门及操作技能训练课程设计方案.doc
  2. linux 传文件夹,linux下上传下载文件夹的方法
  3. kvm解决1000M网卡问题
  4. ethtool 开启网卡_ethtool查看网卡以及修改网卡配置
  5. 国美金融贷款VaR法计算投资风险度,国美金融贷款样本规模正态分布
  6. oracle 归档日志文件archieve log
  7. 2017年“嘉杰信息杯” 中国大学生程序设计竞赛全国邀请赛:E—Partial Sum
  8. 腾讯Java开发面试凉凉,java工程师发展路线
  9. 实战案例:如何用Word制作收款单
  10. CE感恩品牌创始人,一个身价过亿的青年企业家