返回顶部
首页 > 资讯 > 后端开发 > Python >Python导入循环方法
  • 491
分享到

Python导入循环方法

方法Python 2023-01-31 06:01:40 491人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

摘自:Python核心编程第二版:12.8.5 导入循环    实际上,在使用 python 时, 你会发现是能够导入循环的。 如果你开发了大型的 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 模块。



--结束END--

本文标题: Python导入循环方法

本文链接: https://lsjlt.com/news/190377.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python导入循环方法
    摘自:Python核心编程第二版:12.8.5 导入循环    实际上,在使用 Python 时, 你会发现是能够导入循环的。 如果你开发了大型的 Python 工程, 那么你很可能会陷入这样的境地。     我们来看一个例子。 假定我们的...
    99+
    2023-01-31
    方法 Python
  • mysql循环导入redis的方法是什么
    要将MySQL中的数据循环导入到Redis中,可以按照以下步骤进行操作:1. 连接到MySQL数据库:使用MySQL的连接库,例如P...
    99+
    2023-09-04
    mysql redis
  • 不允许 Go 导入循环
    php小编草莓在这里为大家介绍一条重要的规则:在Go语言中,是不允许导入循环的。这意味着在编写Go代码时,我们不能在导入的包中再次导入当前包。这样的规定是为了避免循环依赖的问题,确保代...
    99+
    2024-02-09
    go语言
  • Python入门_浅谈for循环、while循环
    Python中有两种循环,分别为:for循环和while循环。 1. for循环 for循环可以用来遍历某一对象(遍历:通俗点说,就是把这个循环中的第一个元素到最后一个元素依次访问一次)。for循环的基本结...
    99+
    2022-06-04
    浅谈 入门 Python
  • 【Python入门篇】——Python中循环语句(for循环的基础语法)
    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选...
    99+
    2023-09-01
    python 开发语言 numpy
  • 《Python入门到精通》循环语句 while循环,for循环
    「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 循环语句 ...
    99+
    2023-09-04
    python 机器学习 人工智能
  • Python循环方法是什么
    本文小编为大家详细介绍“Python循环方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python循环方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.循环# 1.for...in...
    99+
    2023-06-29
  • flask循环导入的问题解决
    循环导入是指两个文件相互导入对方,形成一个导入循环。这会导致Python无法确定哪个模块应该先导入,进而出现错误。 举个Flask中的例子: 在app.py文件中: from vie...
    99+
    2023-05-18
    flask循环导入
  • Python在for循环中获取循环次数的方法
    这篇文章主要介绍“Python在for循环中获取循环次数的方法”,在日常操作中,相信很多人在Python在for循环中获取循环次数的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python在for循环中...
    99+
    2023-06-02
  • Python 的 map、列表推导、循环
    发现map最快,map返回的是迭代器,如果变成list则花的时间与循环差不多,其次是列表推导,最后是循环来写。 ...
    99+
    2023-01-31
    列表 Python map
  • 【Python入门】Python循环语句(while循环的嵌套应用)
    前言 📕作者简介:热爱跑步的恒川,致力于C/C++、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于Python零基础入门系列,本...
    99+
    2023-09-06
    python 开发语言 经验分享
  • python入门到实践-循环
    Python中主要的循环有 for循环和while循环 for循环是根据设定的次数重复执行代码 while循环实在符合给定的判断条件时执行循环体,不符合则退出循环体 概念这个东西跟你白话多了也不一定能解释的明白,直接通过例子来解释吧。...
    99+
    2023-01-31
    入门 python
  • 【Python入门篇】——Python中循环语句(循环中断break和continue)
    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选...
    99+
    2023-09-06
    python 开发语言 爬虫
  • Python学习之循环方法详解
    目录for循环while循环拓展:列表推导式常见的推导式方法循环的继续与退出(continue与break)continue的使用break的使用循环实现九九乘法表什么是循环? &m...
    99+
    2024-04-02
  • python循环语句的使用方法
    目录一、​for循环语句​二、​循环嵌套​三、​break结束循环​四、​continue跳过本次循环​文章介绍内容以Python 3.x版本为主 一、​for循环语句​ 程序一般情...
    99+
    2024-04-02
  • python跳出双层循环的方法
    目录一、问题描述:二、解决方案:三、案例        一、问题描述: 大多数人在遍历时会使用for双层循环语句,在内层循环中使用break语...
    99+
    2023-01-29
    python跳出双层循环 python 双层循环
  • Python跳出多重循环的方法
    方法1:自定义异常 # -*- coding:utf-8 -*- """ 功能:python跳出循环 """ # 方法1:自定义异常 class Getoutofloop(Exception): pass try: ...
    99+
    2023-01-31
    方法 Python
  • Python循环语句(while循环、for循环)
    Python循环语句 一、while循环二、for语句三、range()函数四、break 和 continue 语句五、pass语句 Python循环语句主要有while循环和for循环...
    99+
    2023-09-04
    python 开发语言 爬虫
  • 【Python入门篇】——Python中循环语句(for循环的嵌套应用)
    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选...
    99+
    2023-09-27
    python 开发语言 numpy
  • python入门到实践-for循环
    for循环可以遍历任何序列的项目,比如遍历一个字符串的所有字母或者遍历一个列表中所有元素,还是老规矩,废话不多说直接整代码: #!/usr/bin/env python3 #coding:utf-8 for letter in 'par...
    99+
    2023-01-31
    入门 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作