zoukankan      html  css  js  c++  java
  • absolute_import 作用

    从字面意思,可以清晰的知道这个函数的作用是绝对路径导入,反之对应的就是相对路径。

    绝对导入和相对导入之间的差异仅在从包导入模块和从包导入其他子模块时才起作用。拿下面的e.g.来说,在pkg下面有一个string.py文件,与python标准库中的string模块同名,里面的main.py文件有引用string模块,当我们从pkg包开始导入main.py的时候,如果没有absolute_import,就会引用pkg下的string模块,反之,就会从顶层路径查找string标准库

    liang@iZ250k0mjlbZ:~$ mkdir pkg
    liang@iZ250k0mjlbZ:~$ touch pkg/__init__.py
    liang@iZ250k0mjlbZ:~$ touch pkg/string.py
    liang@iZ250k0mjlbZ:~$ echo 'import string;print(string.ascii_uppercase)' > pkg/main1.py
    liang@iZ250k0mjlbZ:~$ python
    Python 2.7.12 (default, Dec  4 2017, 14:50:18)
    [GCC 5.4.0 20160609] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import pkg.main1.py
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "pkg/main1.py", line 1, in <module>
        import string;print(string.ascii_uppercase)
    AttributeError: 'module' object has no attribute 'ascii_uppercase'
    >>> import pkg.main1
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "pkg/main1.py", line 1, in <module>
        import string;print(string.ascii_uppercase)
    AttributeError: 'module' object has no attribute 'ascii_uppercase'
    >>> import pkg.string
    >>> exit()
    liang@iZ250k0mjlbZ:~$ echo 'from __future__ import absolute_import;import string;print(string.ascii_uppercase)' > pkg/main2.py
    liang@iZ250k0mjlbZ:~$ python
    Python 2.7.12 (default, Dec  4 2017, 14:50:18)
    [GCC 5.4.0 20160609] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import pkg.main2
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    >>> exit()
    

    unicode_literals 作用

    字面意思,可以简单的看出是针对于unicode编码的,这个就涉及到python的编码历史问题了,python2默认是ascii编码,对于unicode编码的字符串,必须在签名添加u,e.g. u"测试",在python3解决了这个令人头疼的问题,默认编码采用了unicode编码,此库的作用就是为了python2向python3过渡,一旦引入,当前文件下的编码默认就是unicode,下面的例子直接展示了它的用途:

    Python 2.7.12 (default, Dec  4 2017, 14:50:18)
    [GCC 5.4.0 20160609] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from __future__ import unicode_literals
    >>> a=u"aaa"
    >>> a
    u'aaa'
    >>> a="aaa"
    >>> a
    u'aaa'
    >>>
    关注公众号 海量干货等你
  • 相关阅读:
    Android ListView带CheckBox实现单选
    android 登录和设置IP/端口功能
    html5 10大html5前端框架
    Html5 8个强大的基于Bootstrap的CSS框架
    Android 探究 LayoutInflater setFactory
    Android onLoadFinished与onLoaderReset
    Android android.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 1
    Android 中AIDL的使用与理解
    Android Studio查看android源码
    ArrayList和LinkedList的用法区别:
  • 原文地址:https://www.cnblogs.com/sowhat1412/p/12734296.html
Copyright © 2011-2022 走看看