zoukankan      html  css  js  c++  java
  • python编程学习进度九

           今天学习的是关于高级模块的内容,关于这个高级模块我不是太了解,下面是我学习之后的一些总结:其中有相关解释和常常容易踏入的陷阱。_X的命名方式可以防止from *导入这个变量,然而这种方法不能阻止其他导入方式的导入,并不是一些面向对象语言中的私有声明。__all__会列出from *复制的变量名,与_X正相反。同样只对from *有效,不是私有声明。from __feature__ import featurename还不是很理解,好象是用选用扩展功能的方式开启特殊的代码编译。模块可以通过检测自己的__name__是否为"__main__"确定它是在执行还是被导入。这样可以让模块在扮演两种不同角色时发挥不同功能。相对导入:路径以一个点开始,定位同一个包的模块。可以开启__feature__中强迫导入的绝对性。很类似于Linux,两个点表示上一级路径。

    陷阱一:顶层代码的语句次序。被import时模块的顶层代码会立即执行,此时它所引用后文定义的变量将无效。

    陷阱二:字符串变量是不能直接用于import语句的。可以使用exec "import" + modname来使用字符串modname。这样做仍然有个缺点,每次执行时必须编译import语句。更好的代替方案是string = __import__(modname),然后把string单列一行执行即可。

    陷阱三:from复制变量名而不是拷贝。

    #nested1.py
    X = 99
    def printer():print X
    
    #nested2.py
    from nested1 import X,printer
    X = 88
    printer()
    
    %python nested2.py
    99

    陷阱四:reload不影响from导入。为了更新变量,使用.运算符来导入和修改其他模块的变量。

    陷阱五:reload、from及交互模式测试。这部分比较有启发性,建议在原书仔细阅读,简要概括就还是:导入后(模块)要重载(模块),重载后还要重新执行import(变量)。reload和from的合作并不完美,最佳原则是使用reload和import来启动程序。

  • 相关阅读:
    什么是原型(prototype)
    angularjs input指令
    angularjs 弹出框 $modal (转)
    windows下安装wabt
    windows下安装emscripten
    windows下安装mingw
    windows下安装git
    windows下安装cmake
    windows下安装python
    trunc与round
  • 原文地址:https://www.cnblogs.com/lover995/p/12289038.html
Copyright © 2011-2022 走看看