• import 和 from … import 模块的变量、方法引用差异


    import 和 from … import 模块的变量、方法引用差异

    还是上面例子中的模块 support.py:

    def print_func( par ):
       print "Hello : ", par
       return
    

      

    使用 import 引入并调用 support 模块的正确方法:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    # 导入模块
    import support
     
    # 现在可以调用模块里包含的函数了
    support.print_func("Runoob")
    

      

    提示:并不能直接使用 print_func() 实现调用,必须将引入的模块名称当作一个对象,调用这个模块对象下的方法 print_func,这时才能实现调用。

    使用 from … import 模块的正确方法:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    # 导入模块
    from support import *
     
    # 现在可以调用模块里包含的函数了
    print_func("Runoob")
    

      

    提示:可以直接使用 print_func() 实现调用。

    笔者建议:一般来说,推荐使用 import 语句,避免使用 from … import,因为这样可以使你的程序更加易读,也可以避免名称冲突。

      xiaomaofeng

    1. 调用模块属性的区别

    import 模块名
    模块名.xxx = 引用
    
    from 模块名 import *
    xxx = 拷贝  # 能修改属性值  

    函数,类... : "import 模块名" 和 "from 模块名 import *" 都是引用。

    2. 私有属性两种导入的区别

    # . 类中的私有属性
    # 本质做了一个名字重整
    class test()
        self.__name

    __name 名字重整成 _test__name。

    _littlethree : 模块的私有属性(数据)。

    • from 模块 import * : 导入模块时,会跳过私有属性;
    • import 模块 : 通过引用可以访问私有属性

    两个import语义有差异

    import datetime
    print(datetime.datetime.now())
    

    是引入整个datetime包

    from datetime import datetime
    print(datetime.now())
    

    是只引入datetime包里的datetime类

    所以import之后前者是datetime这个包可见 后者是datetime.datetime这个类可见

  • 相关阅读:
    LeetCode -- Rectangle Area
    【转】VS常用快捷键
    C++中include<> 与 include" " 的区别
    浅析_tmain() 与 main() 函数的区别
    VS2013下配置OpenCV 3.0.0 &&& VS2013下配置Opencv2.4.9
    LeetCode -- Valid Parenthese
    杂想 · 警醒
    LeetCode -- Length of Last Word
    LeetCode -- Valid Sudoku
    LeetCode -- Binary Tree Level Order Traversal II
  • 原文地址:https://www.cnblogs.com/microtiger/p/13618708.html
Copyright © 2020-2023  润新知