[oeasy]python0140_导入_import_from_as_namespace_

简介: [oeasy]python0140_导入_import_from_as_namespace_

导入import 回忆上次内容

  • 上次学习了
  • try
  • except


  • 注意要点
  • 半角冒号
  • 缩进
  • 输出错误信息


  • 有错就报告
  • 不要隐瞒
  • 否则找不到出错位置
  • 还可以用traceback把
  • 系统报错信息原样输出



  • 但是代码量好多啊
  • 10多 行了 🤯
  • 可以把他输入部分和输出部分么?🤔


  • 我们先试试
  • 怎么引用 其他的py文件


构建环境

  1. 先新建一个namespace文件夹
  2. 然后进入这个文件夹
  3. 新建两个文件
  4. 被引用模块
  • my_module.py


  1. 主体程序
  • oeasy.py





添加图片注释,不超过 140 字(可选)


  • 然后进去
  • 编辑这两个文件
  • vi -o my_module.py oeasy.py
  • -o 是分窗口编辑文件



效果

  • 结果如下图所示



添加图片注释,不超过 140 字(可选)


  • oeasy.py中输入
  • import my_module


  • my_module.py中输入
  • print("in another")


保存并运行

  • ctrl+k 切换到上方windows
  • ctrl+j 切换到下方windows



添加图片注释,不超过 140 字(可选)


  • :wqa
  • 全部保存并退出
  • w 的意思是先保存
  • q 退出vim
  • a 代表 all buffers 所有缓存



运行结果

  • 运行的是oeasy.py
  • 输出了"i am my_module.py"


  • 这说明
  • 导入成功了




添加图片注释,不超过 140 字(可选)


  • 运行的是
  • oeasy.py


  • oeasy.py中导入了
  • my_module.py


  • my_module.py中
  • 输出了 "i am my_module.py"


  • 通过导入my_module.py
  • 执行了其中的代码


  • 导入对应的关键词import
  • 应该如何理解呢?


import

  • 进口(import)
  • 这里指的是导入模块
  • 这也是python强大之处
  • 可以导入各种使用的包来使用




添加图片注释,不超过 140 字(可选)


  • 可以导入多个文件吗?😱

导入多个文件

  • 上图建议的是
  • 不同模块分行导入




添加图片注释,不超过 140 字(可选)


  • 导入除了可以调用对方代码
  • 还能做什么呢?


尝试引用包内变量



添加图片注释,不超过 140 字(可选)


  • 可以在my_module.py中定义变量
  • 在oeasy.py中引用吗?


尝试运行



添加图片注释,不超过 140 字(可选)


  • pi没有找到😭



添加图片注释,不超过 140 字(可选)


  • 不慌
  • 好饭不怕晚


  • 不是把这些字节码都运行了么?
  • 但是这里面有个作用域(namespace)的问题
  • i 属于 my_module.py
  • 而不属于oeasy.py
  • 所以直接运行找不到i


  • 那怎么办?

修改

  • 只要说清楚这个i来自于my_module就可以了
  • 用一个点(.)
  • 就可以说明从属关系
  • 点(.)的意思是
  • 在 my_module . pi
  • 就是 在my_module i





添加图片注释,不超过 140 字(可选)


  • :wa
  • write all
  • 两个文件都保存


  • :!python3 %
  • 用外部命令python3运行当前文件




添加图片注释,不超过 140 字(可选)


  • pi找到了😌
  • 在my_module.py中
  • pi就是一个标准的变量声明赋值


  • 如果我就想在 oeasy.py 中直接使用 pi
  • 可能么?

修改

  • 声明了一个变量pi
  • 并把mymodule.i的值赋给他




添加图片注释,不超过 140 字(可选)


  • 还有其他写法吗?

from...import...

  • 这句话好像好使



添加图片注释,不超过 140 字(可选)


  • local()函数
  • 可以查看本地局部变量




添加图片注释,不超过 140 字(可选)


  • 本地变量会撞车吗?

撞车(local name crash)



添加图片注释,不超过 140 字(可选)


  • 因此要特别注意尽量
  • 不要使用from xxx import *
  • 这种容易撞车的语句




添加图片注释,不超过 140 字(可选)


  • 撞车是什么样子的!?
  • 可以欣赏一下车祸现场吗?


车祸现场



添加图片注释,不超过 140 字(可选)


  • my_module.pi 被 math.pi 撞飞了



添加图片注释,不超过 140 字(可选)


  • 这其实也是名字空间(namespace)的意义

namespace

  • 名字空间是个好主意!



添加图片注释,不超过 140 字(可选)


  • 那可以给导入进来的变量改名么?

from ... import ... as ...



添加图片注释,不超过 140 字(可选)


  • 可以的
  • 这样可以把变量名更明确一点
  • 其实就是又起了个名字
  • 然后进行赋值




添加图片注释,不超过 140 字(可选)


  • 任务达成!!!
  • 总结一下 !✿✿ヽ(°▽°)ノ✿


总结

  • 我们这次导入了外部的py文件
  • import my_module
  • 导入一个自己定义的模块


  • 可以使用my_module中的变量
  • 不能 直接使用 my_module.py文件中的变量
  • 只要加my_module.作为前缀就可以



  • 直接导入导入变量、函数
  • from my_module import pi
  • 可以导入my_module.pi 并作为pi变量使用


  • from my_module import pi as my_module_pi
  • 导入变量并重命名



  • 上次那个苹果香蕉统计程序
  • 能封装成文件模块
  • 再导入么?🤔


目录
相关文章
|
2天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
97 80
|
9天前
|
人工智能 C语言 Python
[oeasy]python051_什么样的变量名能用_标识符_identifier
本文介绍了Python中变量名的命名规则,强调标识符(identifier)必须以字母或下划线开始,后续可包含字母、下划线及数字。通过`isidentifier()`函数可验证字符串是否为合法标识符。文中还探讨了为何数字不能作为标识符的开头,并提供了相关练习与解答,最后提及这些规则源自C语言的影响。
103 69
|
3月前
|
Unix 编译器 Shell
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
本文回顾了计算机语言与操作系统的起源,探讨了早期 Unix 操作系统及其与 C 语言的相互促进发展。Unix 最初用汇编语言编写,运行在 PDP-7 上,后来 Thompson 和 Ritchie 开发了 C 语言及编译器,使 Unix 重写并成功编译。1974 年 Ritchie 发表论文,Unix 开始被学术界关注,并逐渐普及。伯克利分校也在此过程中发挥了重要作用,推动了 Unix 和 C 语言的广泛传播。
65 9
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
|
11天前
|
Python
[oeasy]python050_如何删除变量_del_delete_variable
本文介绍了Python中如何删除变量,通过`del`关键字实现。首先回顾了变量的声明与赋值,说明变量在声明前是不存在的,通过声明赋予其生命和初始值。使用`locals()`函数可查看当前作用域内的所有本地变量。进一步探讨了变量的生命周期,包括自然死亡(程序结束时自动释放)和手动删除(使用`del`关键字)。最后指出,删除后的变量将无法在当前作用域中被访问,并提供了相关示例代码及图像辅助理解。
106 68
|
8天前
|
Unix 编译器 C语言
[oeasy]python052_[系统开发语言为什么默认是c语言
本文介绍了C语言为何成为系统开发的首选语言,从其诞生背景、发展历史及特点进行阐述。C语言源于贝尔实验室,与Unix操作系统相互促进,因其简洁、高效、跨平台等特性,逐渐成为主流。文章还提及了C语言的学习资料及其对编程文化的影响。
20 5
|
13天前
|
Shell Python
[oeasy]python049_[词根溯源]locals_现在都定义了哪些变量
本文介绍了Python中`locals()`函数的使用方法及其在调试中的作用。通过回顾变量赋值、连等赋值、解包赋值等内容,文章详细解释了如何利用`locals()`函数查看当前作用域内的本地变量,并探讨了变量声明前后以及导入模块对本地变量的影响。最后,文章还涉及了一些与“local”相关的英语词汇,如`locate`、`allocate`等,帮助读者更好地理解“本地”概念在编程及日常生活中的应用。
27 9
|
16天前
|
Python 容器
[oeasy]python048_用变量赋值_连等赋值_解包赋值_unpack_assignment _
本文介绍了Python中变量赋值的不同方式,包括使用字面量和另一个变量进行赋值。通过`id()`函数展示了变量在内存中的唯一地址,并探讨了变量、模块、函数及类类型的地址特性。文章还讲解了连等赋值和解包赋值的概念,以及如何查看已声明的变量。最后总结了所有对象(如变量、模块、函数、类)都有其类型且在内存中有唯一的引用地址,构成了Python系统的基石。
26 5
|
24天前
|
存储 Python 容器
[oeasy]python045_[词根溯源]赋值_assignment_usage_使用
本文回顾了上一次讲解的内容,重点讨论了变量的概念及其在各种系统和游戏中的应用。文章详细解释了变量的声明与赋值操作,强调了赋值即为将具体值存储到变量名下的过程。同时,通过例子说明了字面量(如数字0)不能被赋值给其他值的原因。此外,还探讨了“赋值”一词的来源及其英文表达“assignment”的含义,并简要介绍了与之相关的英语词汇,如sign、assign、signal等。最后,总结了本次课程的核心内容,即赋值操作的定义和实现方式。
21 3
|
28天前
|
开发工具 Python
[oeasy]python043_自己制作的ascii码表_循环语句_条件语句_缩进_indent
本文介绍了如何使用Python制作ASCII码表,回顾了上一次课程中`print`函数的`end`参数,并通过循环和条件语句实现每8个字符换行的功能。通过调整代码中的缩进,实现了正确的输出格式。最后展示了制作完成的ASCII码表,并预告了下一次课程的内容。
24 2
|
1月前
|
人工智能 Shell 开发工具
[oeasy]python0041_输出ASCII码表_英文字符编码_键盘字符_ISO_646
本文介绍了ASCII码表的生成与使用,包括英文字符、数字和符号的编码。通过Python代码遍历0到127的ASCII值,解决了找不到竖线符号的问题,并解释了ASCII码的固定映射关系及其重要性。文章还介绍了ASCII码的历史背景,以及它如何成为国际标准ISO 646。最后,通过安装`ascii`程序展示了完整的ASCII码表。
22 1