通常,不要使用 from modulename import * 。这样做会使导入器的命名空间变得混乱,并且使得连接器更难以检测未定义的名称。

在文件的顶部导入模块。这样做可以清楚地了解代码所需的其他模块,并避免了模块名称是否在范围内的问题。每行导入一个模块可以轻松添加和删除导入的模块,但每行导入多个模块会占用更少的屏幕空间。

如果按以下顺序导入模块,这是一种很好的做法:

标准库模块 – 例如: sys, os, getopt, re

第三方库模块(安装在Python的site-packages目录中的任何内容) – 例如mx.DateTime,ZODB,PIL.Image等

本地开发的模块

有时需要将模块导入语句移动到函数或类里面,以避免循环导入问题。Gordon McMillan 说:

当两个模块都使用 “import ” 的导入形式时,循环导入就可以了。但是当第 2 个模块想从第 1 个模块中获取一个名称 (“from module import name”) 并且导入位于顶层时,就会出错。 这是因为第 1 个模块中的名称还不可用,因为第 1 个模块正在忙着导入第 2 个模块。

在这种情况下,如果第二个模块仅用于一个函数,则可以轻松地将模块导入语句移动到该函数中。调用导入时,第一个模块将完成初始化,第二个模块可以进行导入。

如果某些模块是特定于平台的,则可能还需要将模块导入语句移出顶级代码。在这种情况下,甚至可能无法导入文件顶部的所有模块。在这种情况下,在相应的特定于平台的代码中导入正确的模块是一个很好的选择。

只有当需要解决诸如避免循环导入或试图减少模块初始化时间的问题时,才可以将导入移动到本地范围,例如在函数定义中。如果根据程序的执行方式,许多导入是不必要的,这种技术尤其有用。如果仅在某个函数中使用模块,您还可能希望将导入移到该函数中。请注意,第一次加载模块可能会因为模块的一次初始化而代价高昂,但多次加载模块实际上是免费的,只需进行几次字典查找。即使模块名称超出了作用域,模块也可能在 sys.modules 中可用。

python3.12答案_编程常见问题相关推荐

  1. JAVA编程习题及答案_完美版

    JAVA编程习题及答案_完美版 原创 lingwu7 最后发布于2017-08-15 20:01:12 阅读数 10796 收藏 发布于2017-08-15 20:01:12 版权声明:本文为博主原创 ...

  2. Linux环境编程姜林美,Linux环境编程习题_编程题_答案.pdf

    Linux环境编程习题_编程题_答案 Linux 境编程-人民邮电出版社-姜林美 课后习题(编程题)答案 第三章 1 第五章 4 第六章 9 第七章 19 第八章 22 第九章 35 第十章 38 三 ...

  3. abb机器人离线编程软件叫做_工业机器人离线编程(ABB)1-2 常用离线编程软件介绍.pptx...

    1-2 常用离线编程软件介绍;一.常用离线编程软件;1. ABB RobotStudio离线编程软件介绍RobotStudio 是一款 PC 应用程序,用于机器人单元的建模.离线创建和仿真.如图1-1 ...

  4. python发行版是什么意思_Python(40)常见问题:编程常见问题

    编程常见问题 目录 编程常见问题 如何创建 .pyc 文件? 如何找到当前模块名称? 如何让模块相互导入? __import__('x.y.z') 返回 ; 如何获取z? 当我编辑了导入过的模块并重新 ...

  5. 【转】网络编程常见问题总结

    网络编程常见问题总结 这里对在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP socket相关的总结, 可能会存在错误, 有任何问题欢迎大家提出. 对于网络编程的更多详细说明建 ...

  6. cvi中c语言只保留两位小数,CVI编程常见问题与错误-2012.9

    CVI编程常见问题或错误 1.CVI编程时,在程序中插入函数的方法?如何了解该函数隶属那个函数库? (3) 2.如何查看或者找到一个CVI或IMAQ Vision的函数? (4) 3.实验一不能显示曲 ...

  7. Visual Basic编程常见问题及解答(3)

    让您的文字框有 Undo / Redo 的功能 很多软件都有提供 Undo / Redo 的功能,Microsoft 的产品都可以提供多次 Undo 反悔,功能更强大! 在 VB 的程序中,我们也可以 ...

  8. 计算机综合布线考试试题A,答案_网络综合布线期末考试A卷.doc

    答案_网络综合布线期末考试A卷 宿迁经贸高等职业技术学校2013--2014学年度第一学期 信息传媒系计算机网络技术专业2012级<网络综合布线> 期末试卷(A卷) (考试时间为90分钟) ...

  9. CSAPP:第12章 并发编程

    CSAPP:第12章 并发编程 文章目录 CSAPP:第12章 并发编程 12.1 基于进程的并发编程(Process-based) 12.1.1 基于进程的并发服务器 12.1.2 进程的优劣 12 ...

最新文章

  1. linux7 显示登陆,centos7 查看,修改登录日志
  2. Javascript与框架prototype,JQyuery调研
  3. webflux webclient DataBufferLimitException: Exceeded limit on max bytes to buffer
  4. 完整opencv(emgucv)人脸、检测、采集、识别、匹配、对比
  5. IOS仿微信键盘快捷工具栏
  6. 【Python】Matplotlib绘制蓝天下的普通房屋
  7. wince 开发_大牛总结: 入行嵌入式开发之前,先来看看这个规划
  8. java读写锁死锁例子_Java并发关于重入锁与读写锁的详解
  9. python 版本控制及django,git的使用
  10. Phpcms v9 整合Discuz! X2.5 和UCenter 1.6.0详细教程
  11. 爬虫告诉你, 互联网大数据行业有多赚钱!
  12. php 导出vcard,将Android的contacts2.db导出成vcard联系人的方法
  13. 微信小程序代码大全 - 小程序开发福利
  14. 计算机软件故障排除ppt,计算机基础知识及常见故障排除.ppt
  15. oracle错误1327,问题简述:在oracle linux下安装oracle10g,多个文件报“Permission denied”错误...
  16. 对偶(duality)的含义
  17. 深度优先搜索/广度优先搜索
  18. VR科技赋能智慧冬奥
  19. Python解决抓取内容乱码问题(decode和encode解码)
  20. 2020曼彻斯特大学计算机2020,2020年曼彻斯特大学申请要求完整版

热门文章

  1. hal 双串口同时接收丢失数据_【STM32Cube_06】使用USART发送和接收数据(查询模式)...
  2. java 导入world数据_java读取world文件,把world文件中的内容,原样输出到页面上。...
  3. linux es数据库 head,elasticsearch安装es-sql插件
  4. C语言 实现登录注册功能
  5. Linux Ubuntu 16.04系统下可用的Windows应用
  6. java 可逆的加密算法_java实现AES可逆加密算法
  7. codesys com库_CoDeSys官方系统库在线下载,替换国内下载服务器教程
  8. python做什么模型_主题模型初学者指南[Python]
  9. 在墙上找垂直线_墙上如何快速找水平线
  10. 网站重新解析换服务器,更换解析服务器地址