模块嵌套调用的坑,经验

从b.py启动
b.py中导入了green目录下的g模块
测试时运行正常

测试b模块运行正常后
我们可以就以为b模块开发好了(导模块方面)
开心地去开发别的模块了

结果
r.py要导入b模块

r.py代码

b.py的代码

g.py的代码

从r模块启动后,发现报错

r文件导入模块,会优先从r所在的工作目录来找
如果找不到,就去解释器所在目录的lib的目录中去找

关注报错的原因

模块导入的原理
1,main.py是启动文件
如果他要导入模块
优先从main.py所在的目录开始找
比如

2,如果要导的内容,在工作目录中没有
那么会从python解释器所在工作目录的lib目录下找
简单的说,如果在main.py没有找到要的模块
就会去一个特别的地方去找
理解这一点就好

3,如果我导入的模块中,又导入了别的模块。
那么寻找的起点,以启动文件所在目录为启动。
简单来说
如果要从r模块中导入b模块
那么r的写法,应该从untitle8这里开始找
理解为主

总结一下
一旦程序启动
所以有模块导入都要以启动文件为参照

如果我希望破掉这个规则
不是以启动文件为起点来调的话
还有一个办法,就是
把我们的启动路径添加到环境变量

例子


main.py导入了b模块
b模块导入g模块
g模块中有G变蛳
如果我要在main.py中获得G变量的数据
按照图示的方式来获取

被导入的模块我们要把它理解为一个对象
可以把它当作一个模块对象

环境变量

python中的sys模块中有一个path

sys.path
可以得到环境变量的数据,结果是一个列表

环境变量是提供给计算机一个查找路径

模块导入演练

代码

import filehandle
#
# 模块导入后
# 使用办法
# 1,使用模块的变量
# 模块名.变量名
#
# 2,如果要用模块中的方法
# 模块名.方法名()res = filehandle.model_name
print(res)filehandle.get_time()

反射的复习

class Dog:def __init__(self, name):self.name = namextq = Dog("笑天狗")# 获取狗的名字
# 对象.属性
n = xtq.name
print(n)# 通过反射的方式来拿
# 反射的应用场景是,我有一个字符串,我想利用字符串来取值
a = "name"
# xtq.a  ----> xtq.name
# getattr(obj对象,str属性名)    ---- 》 对象.属性
n2 = getattr(xtq,a)
# 相当于第十八行相当于第二十行
# n2 = getattr(xtq,"name")
# 第二十行,效果相当于第22行。
# n2 = xtq.name
print(n2)

小结
获取对象 t 的属性 name 的值两种方式

方式一
对象.属性
t.name方式二
getattr(对象, 属性字符串)
getattr(t,"name")

反射的新功能解锁

可以使用反射来拿模块中的标识符

反射获取变量

反射执行模块中的方法

import filehandle# f = filehandle.get_time
# f()f2 = getattr(filehandle, "get_time")
f2()

python-模块的嵌套调用-随堂草稿件相关推荐

  1. python函数的嵌套调用_python函数的嵌套调用

    我们之前的代码都是定义函数然后直接调用,但是没有在一个函数内调用另外一个函数,今天就感受下函数嵌套调用. 提示:如果你想当然的认为函数嵌套是在函数内部又嵌套定义一个函数这种操作的话,那么这叫做闭包.相 ...

  2. python 函数的嵌套调用

    def testB():print('---- testB start----')print('这里是testB函数执行的代码...(省略)...')print('---- testB end---- ...

  3. python模块--如何相互调用自己写的模块

    一.模块相互调用同级目录调用时的两种方法 1 import module 2 print(module.add(3,8)) 3 4 from module import add 5 print(add ...

  4. Python基础day04【函数(定义与调用、文档说明、传参函数、全局变量、返回值、嵌套调用)】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day04[字典]    目录 3.函数 函数的定义和调用 函数定义 PEP8规范 ...

  5. python调用包的路径_Python3 模块、包调用路径详解

    如下所示: ''' 以下代码均为讲解,不能实际操作 ''' ''' 博客园 Infi_chu ''' ''' 模块的优点: 1.高可维护性 2.可以大大减少编写的代码量 模块一共有三种: 1.Pyth ...

  6. python怎么封装方法然后调用_我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗?...

    展开全部 可以的,只要把python模块转换成2113dll模块,利用5261Python自带的ctypes模块加载调用就行.4102 ctypes 是Python的外部函数库.它提供了与1653 C ...

  7. C#调用Python模块

    编程:C#调用Python模块 当下,C#与Python都是比较热门的计算机编程语言,他们各有优缺点,如果能让他们互相配合工作,那是多么美好的事情,今天我来讲解一下如何利用C#来调用Python. 如 ...

  8. java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...

    常见的java调用python脚本方式 通过jython提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 通过jython提供的类库实现 通过jython实现的话,我 ...

  9. python模块调用模块_Python模块调用

    目录 1 模块 一个模块是包含了Python定义和声明的文件,文件名,就是模块名字加上py 后缀 把定义的函数.变量保存到文件中,通过Python test.py的方式执行,test.py就是脚本文件 ...

最新文章

  1. R包animalcules-一键式交互探索微生物组数据
  2. 函数递归简单题-hdoj-2044 2018-一只小蜜蜂 母牛的故事
  3. 四十一、ETL工具kettle输出步骤
  4. mysql 查询两张表结构相同的数据库_利用反射处理多个表结构相同的数据的查询和数据库表的关联...
  5. FLEXAIR 界面展示。
  6. 这个连“炒菜的油”都不放过的“吝啬”男人,却用“吝啬”创造了世界奇迹!...
  7. 初探Object in java
  8. [转载] python机器学习第三章:使用scikit-learn实现机器学习分类算法
  9. Evaluation for Odometry里程计精度评估
  10. 计算机二级excel高级筛选,Excel高级筛选怎么用之相关案例:excel高级筛选多个条件(并且、或用法)...
  11. [计算机数值分析]拉格朗日插值公式
  12. 2021年中国遗嘱人群画像情况(附子女情况、婚姻状况、学历、年龄、性别及各学历段人数分布)[图]
  13. Transition组件
  14. 解决在vue/react中axios请求超时的问题
  15. python英文字符频率统计_Python中怎样统计英文文本中的字母频次?
  16. 【MySQL】这是我见过最有用的MySQL数据类型面试题,面了无数家总结的
  17. html中只显示农历的完整代码,很全的显示阴历(农历)日期的js代码
  18. inode对接微软服务器,windows系统下iNode的使用方法.doc
  19. .NetCore对接各大财务软件凭证API——金蝶系列(1)
  20. 操作系统学习-6. 信号量

热门文章

  1. MUI下拉导航组件 - 应用篇
  2. 苹果cms v10模板 蓝色简洁大气手机端模板
  3. 使用 stm32实现锂电充电_千次循环使用,ZMI可充电锂电池套装,够用一辈子吗?...
  4. bartlett方差齐性检验_方差齐性检验
  5. 魔方财务对接码支付插件
  6. 实用常识 | HTML嵌入处理MARKDOWN合并单元格
  7. python存文件代码_Python文件读写保存操作的示例代码
  8. Express是Node.js上最流行的Web开发框架。
  9. 完整解决方案:让你的IIS 支持PHP方法
  10. QQ网页登陆密码加密方式(农场、空间、WebQQ等通用)