我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python导入循环方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python导入循环方法

摘自:Python核心编程第二版:


12.8.5 导入循环

    实际上,在使用 Python 时, 你会发现是能够导入循环的。 如果你开发了大型的 Python 工程, 那么你很可能会陷入这样的境地。 

    我们来看一个例子。 假定我们的产品有一个很复杂的命令行接口( command-line interface ,CLI)。 其中将会有超过一百万的命令, 结果你就有了一个“超冗余处理器”(overly massive handler,OMH)子集。 每加入一个新特性, 将有一到三条的新命令加入, 用于支持新的特性。 下边是我们的omh4cli.py 脚本:


from cli4vof import cli4vof

# command line interface utility function

def cli_util():

    pass

# overly massive handlers for the command line interface

def omh4cli():

    :

        cli4vof()

    :

        omh4cli()



    假定大多控制器都要用到这里的(其实是空的)工具函数。命令行接口的 OMH 都被封装在 omh4cli() 函数里。 如果我们要添加一个新的命令, 那么它会被调用。 


    现在这个模块不断地增长, 一些聪明的工程师会决定把新命令放入到隔离的模块里, 在原始模 块中只提供访问新东西的钩子。 这样, 管理代码会变得更简单, 如果在新加入内容中发现了 bug , 那么你就不必在一个几兆的 Python 文件里搜索。 


    在我们的例子中, 有一个兴奋的经理要我们加入一个 "非常好的特性"。我们将创建一个新的 cli4vof.py 脚本, 而不是把新内容集成到omh4cli.py 里: 


import omh4cli 

# command-line interface for a very outstanding feature

def cli4vof():

    omh4cli.cli_util()



    前边已经提到, 工具函数是每个命令必须的, 而且由于不能把代码从主控制器复制出来, 所以 我们导入了主模块, 在我们的控制器中添加对 omh , omh4cli() 的调用。 

    问题在于主控制器 omh4cli 会导入我们的 cli4vof 模块(获得新命令的函数), 而 cli4vof 也会导入 omh4cli (用于获得工具函数)。模块导入会失败, 这是因为 Python 尝试导入一个先前没 有完全导入的模块:


$ python omh4cli.py 

Traceback (most recent call last):

File "omh4cli.py", line 3, in ? from cli4vof import cli4vof

File "/usr/prod/cli4vof.py", line 3, in ?

import omh4cli

File "/usr/prod/omh4cli.py", line 3, in ?

from cli4vof import cli4vof

ImportError: cannot import name cli4vof



    注意跟踪返回消息中显示的对 cli4vof 的循环导入。 问题在于要想调用工具函数, cli4vof 必 须导入 omh4cli 。 如果它不需要这样做, 那么 omh4cli 将会成功导入 cli4vof , 程序正常执行。 但在这里, omh4cli 尝试导入 cli4vof , 而 cli4vof 也试着导入 omh4cli 。 最后谁也不会完成 导入工作, 引发错误。 这只是一个导入循环的例子。 事实上实际应用中会出现更复杂的情况。


    解决这个问题几乎总是移除其中一个导入语句。 你经常会在模块的最后看到 import 语句。作 为一个初学者, 你只需要试着习惯它们, 如果你以前遇到在模块底部的 import 语句,现在你知道是为什么了。在我们的例子中, 我们不能把 import omh4cli 移到最后, 因为调用 cli4vof() 的时候 omh4cli() 名字还没有被载入。


$ python omh4cli.py 

Traceback (most recent call last): File "omh4cli.py", line 3, in ? from cli4vof import

cli4vof

File "/usr/prod/cli4vof.py", line 7, in ?

import omh4cli

File "/usr/prod/omh4cli.py", line 13, in ?

omh4cli()

File "/usr/prod/omh4cli.py", line 11, in omh4cli cli4vof()

File "/usr/prod/cli4vof.py", line 5, in cli4vof omh4cli.cli_util()

NameError: global name 'omh4cli' is not defined



    我们的解决方法只是把 import 语句移到 cli4vof() 函数内部:


def cli4vof():

    import omh4cli

    omh4cli.cli_util()



    这样, 从 omh4cli() 导入 cli4vof() 模块会顺利完成, 在 omh4cli() 被调用之前它会被正 确导入。 只有在执行到 cli4vof.cli4vof() 时候才会导入 omh4cli 模块。



免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python导入循环方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python导入循环方法

摘自:Python核心编程第二版:12.8.5 导入循环    实际上,在使用 Python 时, 你会发现是能够导入循环的。 如果你开发了大型的 Python 工程, 那么你很可能会陷入这样的境地。     我们来看一个例子。 假定我们的
2023-01-31

mysql循环导入redis的方法是什么

要将MySQL中的数据循环导入到Redis中,可以按照以下步骤进行操作:1. 连接到MySQL数据库:使用MySQL的连接库,例如Python中的`mysql-connector-python`库,连接到MySQL数据库。2. 查询MySQ
2023-09-04

不允许 Go 导入循环

php小编草莓在这里为大家介绍一条重要的规则:在Go语言中,是不允许导入循环的。这意味着在编写Go代码时,我们不能在导入的包中再次导入当前包。这样的规定是为了避免循环依赖的问题,确保代码的可靠性和可维护性。如果我们在编写代码时遇到了循环导入
不允许 Go 导入循环
2024-02-09

Python入门_浅谈for循环、while循环

Python中有两种循环,分别为:for循环和while循环。 1. for循环 for循环可以用来遍历某一对象(遍历:通俗点说,就是把这个循环中的第一个元素到最后一个元素依次访问一次)。for循环的基本结构如下:具体看这个案例: 设计一个
2022-06-04

Python循环方法是什么

本文小编为大家详细介绍“Python循环方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python循环方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.循环# 1.for...in循环,依次
2023-06-29

Python在for循环中获取循环次数的方法

这篇文章主要介绍“Python在for循环中获取循环次数的方法”,在日常操作中,相信很多人在Python在for循环中获取循环次数的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python在for循环中
2023-06-02

Python 的 map、列表推导、循环

发现map最快,map返回的是迭代器,如果变成list则花的时间与循环差不多,其次是列表推导,最后是循环来写。
2023-01-31

flask循环导入的问题解决

循环导入是指两个文件相互导入对,本文主要介绍了flask循环导入的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-18

Python跳出多重循环的方法

方法1:自定义异常# -*- coding:utf-8 -*-"""功能:python跳出循环"""# 方法1:自定义异常class Getoutofloop(Exception): passtry: for i in rang
2023-01-31

python跳出双层循环的方法

本文主要介绍了python跳出双层循环的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-29

python入门到实践-循环

Python中主要的循环有 for循环和while循环for循环是根据设定的次数重复执行代码while循环实在符合给定的判断条件时执行循环体,不符合则退出循环体概念这个东西跟你白话多了也不一定能解释的明白,直接通过例子来解释吧。咱们从不断的
2023-01-31

python入门到实践-for循环

for循环可以遍历任何序列的项目,比如遍历一个字符串的所有字母或者遍历一个列表中所有元素,还是老规矩,废话不多说直接整代码:#!/usr/bin/env python3#coding:utf-8for letter in 'park':
2023-01-31

python循环嵌套的方法是什么

Python中循环嵌套的方法是将一个循环放在另一个循环内部。下面是两种常见的循环嵌套方法:1. 使用嵌套的for循环:可以在一个for循环的内部嵌套另一个for循环。```pythonfor i in range(5):for j in r
2023-09-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录