这些Python代码技巧,交叉编译

被人工智能捧红的 Python
已是一种提高完善且相当各个化的语言,当中自然有部分您从未意识的功力。本文可能能够让你学到壹些新技巧。

正文来源
本人的博客。博客的稿子保持更新,此文或者不是新型事态。

Python 是社会风气上最流行、热门的编制程序语言之一,原因很多,比如:

下载、解压 python 源代码

从 python.org 下载。

  • 简单学习
  • 超高的通用性
  • 负有多量模块和库

导入交叉编写翻译 patch

参考自
python-2.7-001-support-for-build.patch,二.七.1一的修改地点有个别许扭转,详见如下 patch。

Python 就算应用 autoconf,可是事实上代码中早就包蕴 configure
文件,因而下文代码给出的是修改 configure.ac 并执行 autoconf 后生成的
configure 文件。

patch 的应用办法,在 python 源代码根目录下执行:

patch -p1 < ../0001-cross-compile.patch

python 二.七.11 交叉编写翻译 patch:

diff --git a/Makefile.pre.in b/Makefile.pre.in
index ee73edd..730db7e 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -237,7 +237,8 @@ LIBFFI_INCLUDEDIR=  @LIBFFI_INCLUDEDIR@

 ##########################################################################
 # Parser
-PGEN=      Parser/pgen$(EXE)
+BUILDPGEN=     Parser/pgen$(EXE)
+PGEN_FOR_BUILD=    @PGEN_FOR_BUILD@

 PSRCS=     \
        Parser/acceler.c \
@@ -635,14 +636,14 @@ Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule

 $(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGENSRCS)
        @$(MKDIR_P) Include
-       $(MAKE) $(PGEN)
-       $(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
+       $(MAKE) $(BUILDPGEN)
+       $(PGEN_FOR_BUILD) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
 $(GRAMMAR_C): $(GRAMMAR_H) $(GRAMMAR_INPUT) $(PGENSRCS)
        $(MAKE) $(GRAMMAR_H)
        touch $(GRAMMAR_C)

-$(PGEN):   $(PGENOBJS)
-       $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
+$(BUILDPGEN):  $(PGENOBJS)
+       $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(BUILDPGEN)

 Parser/grammar.o:  $(srcdir)/Parser/grammar.c \
                $(srcdir)/Include/token.h \
diff --git a/configure b/configure
index 7dab897..bf16c0e 100755
--- a/configure
+++ b/configure
@@ -734,6 +734,7 @@ UNIVERSALSDK
 CONFIG_ARGS
 SOVERSION
 VERSION
+PGEN_FOR_BUILD
 PYTHON_FOR_BUILD
 host_os
 host_vendor
@@ -2911,6 +2912,13 @@ else
 fi


+if test "$cross_compiling" = yes; then
+    PGEN_FOR_BUILD="${PGEN_FOR_BUILD}"
+else
+    PGEN_FOR_BUILD='$(BUILDPGEN)'
+fi
+
+

 if test "$prefix" != "/"; then
     prefix=`echo "$prefix" | sed -e 's/\/$//g'`
@@ -6334,6 +6342,12 @@ fi


 # Enable PGO flags.
+
+
+
+
+
+
 # Extract the first word of "llvm-profdata", so it can be a program name with args.
 set dummy llvm-profdata; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-- 
1.9.1

正文将享受部分行使 Python 的技艺,顺序依照 A-Z 排列。

创建 build 目录

在 python 源代码下创办 build-pcbuild-mips 目录,分别用于编译 PC
pgen(交叉编写翻译时用到)与接力编译 mips python。该目录做
configure、make、make install,编写翻译时用于保存临时变卦的文本,保障 python
源代码干净。

 1.all or any

Python 深受欢迎的原因之壹是其可读性和表明性。

大千世界还常常把 Python 笑称为「可实行伪码(executable
pseudocode)」。不过,当您能够编写制定那样的代码时,很难去争论那种议论:

x = [True, True, False]
if any(x):
    print("At least one True")
if all(x):
    print("Not one False")
if any(x) and not all(x):
    print("At least one True and one False")

  

编写翻译本地 Python 与 pgen

用来生成 grammar 所须要文件用。

cd build-pc

../configure CC=gcc CXX=g++ AR=ar RANLIB=ranlib LDFLAGS="-L/usr/lib -L/usr/lib64 -L/usr/local/lib -L/usr/local/lib64" CFLAGS="-I/usr/include -I/usr/local/include"

make python Parser/pgen

 2.bashplotlib

想在控制斯科学普及里绘图吗?

$ pip install bashplotlib

 

行使方面包车型客车行,即可在控制德雷斯顿绘图。

 

配置

3.collections

Python 有一对很棒的私下认可数据类型,但偶尔它们或许不会尽如你意。

而是,Python 标准库提供了 collections
模块。那么些有利的叠加组件能够为您提供愈多数据类型。

collections 模块:https://docs.python.org/3/library/collections.html

from collections import OrderedDict, Counter
# Remembers the order the keys are added!
x = OrderedDict(a=1, b=2, c=3)
# Counts the frequency of each character
y = Counter("Hello World!")

   

布局交叉编译环境变量

比如 CC、CFLAGS、LDFLAGS 等。

4.dir

您是还是不是想过如何查看 Python 对象内部及其全数哪些属性?

输入以下命令行:

>>> dir()
>>> dir("Hello World")
>>> dir(dir)

当以交互格局运营 Python
时,那恐怕是二个极度管用的作用,并且能够动态地商量你正在采纳的靶子和模块。

想要明白更加多,点那里:https://docs.python.org/3/library/functions.html\#dir

 

configure 配置

配备命令如下:
configure 的 prefix 只辅助相对路径。

cd build-mips

../configure --host=mips64-octeon-linux-gnu --build=x86_64-linux-gnu --prefix=/home/sunyongfeng/python-install --disable-ipv6 ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no ac_cv_have_long_long_format=yes PGEN_FOR_BUILD=../build-pc/Parse/pgen

问题:

  • --enable-FEATURE,不明了有何样 features ,怎么布局;
  • --enable-PACKAGE,不知底有何 package,怎么布署。

安排完了以后,在 Modules 目录会生成 Setup 文件。x86的暗中同意编写翻译会编写翻译到必须的模块,而 mips64 的接力编写翻译很多模块未有编写翻译下,如
socket 等。修改 Modules/Setup
文件,定制想编写翻译的放置模块。以下是基础模块,近期还不知底假诺不想内置的话要怎么着编写翻译。
定制内置模块,参见那篇博文 《定制 Python 嵌入 C++: (四) 定制 Python
内建立模型块》,讲述各样内置模块的作用。

# Modules that should always be present (non UNIX dependent):                                       

array arraymodule.c # array objects                                                                 
cmath cmathmodule.c _math.c # -lm # complex math library functions                                  
math mathmodule.c _math.c # -lm # math library functions, e.g. sin()                                
_struct _struct.c   # binary structure packing/unpacking                                            
time timemodule.c # -lm # time operations and variables                                             
operator operator.c # operator.add() and similar goodies                                            
_testcapi _testcapimodule.c    # Python C API test module                                           
_random _randommodule.c # Random number generator                                                   
_collections _collectionsmodule.c # Container types                                                 
_heapq _heapqmodule.c       # Heapq type                                                            
itertools itertoolsmodule.c # Functions creating iterators for efficient looping                    
strop stropmodule.c     # String manipulations                                                      
_functools _functoolsmodule.c   # Tools for working with functions and callable objects             
_elementtree -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI _elementtree.c  # elementtree accelerator
#_pickle _pickle.c  # pickle accelerator                                                            
datetime datetimemodule.c   # date/time type                                                        
_bisect _bisectmodule.c # Bisection algorithms                                                      

unicodedata unicodedata.c    # static Unicode character database

5.emoji

毋庸置疑,真的有。请点击那里:https://pypi.org/project/emoji/

$ pip install emoji

 

别以为我不知情你会偷偷试它→→

from emoji import emojize
print(emojize(":thumbs_up:"))

👍

 

编译

简单的 make 命令即可。

6.from __future__ import

Python
流行的八个结出是,总有新本子正在开发中。新本子意味着新职能——除非您的本子现已不合时宜。

不过,别担心。__ future__模块允许用户导入新版 Python
的功能。这差不多就像是时光旅行,或许魔法什么的。

__ future__模块:https://docs.python.org/2/library/\*future\*.html

from __future__ import print_function
print("Hello World!")

  

安装

命令 make install -i,安装 binlibshareman 等目录至
./configure 中配置的 prefix 目录。

sunyongfeng@R04220:~/python-install$ ls
bin  include  lib  share
sunyongfeng@R04220:~/python-install$ ls -al *
bin:
总用量 9612
drwxr-xr-x 2 sunyongfeng sunyongfeng    4096  5月 13 16:51 .
drwxr-xr-x 6 sunyongfeng sunyongfeng    4096  5月 15 10:58 ..
-rwxrwxr-x 1 sunyongfeng sunyongfeng     123  5月 13 16:38 2to3
-rwxrwxr-x 1 sunyongfeng sunyongfeng     121  5月 13 16:38 idle
-rwxrwxr-x 1 sunyongfeng sunyongfeng     106  5月 13 16:38 pydoc
lrwxrwxrwx 1 sunyongfeng sunyongfeng       7  5月 13 16:51 python -> python2
lrwxrwxrwx 1 sunyongfeng sunyongfeng       9  5月 13 16:51 python2 -> python2.7
-rwxr-xr-x 1 sunyongfeng sunyongfeng 9793952  5月 13 16:51 python2.7
-rwxr-xr-x 1 sunyongfeng sunyongfeng    1709  5月 13 16:51 python2.7-config
lrwxrwxrwx 1 sunyongfeng sunyongfeng      16  5月 13 16:51 python2-config -> python2.7-config
lrwxrwxrwx 1 sunyongfeng sunyongfeng      14  5月 13 16:51 python-config -> python2-config
-rwxrwxr-x 1 sunyongfeng sunyongfeng   18569  5月 13 16:38 smtpd.py

include:
总用量 12
drwxr-xr-x 3 sunyongfeng sunyongfeng 4096  5月 13 16:51 .
drwxr-xr-x 6 sunyongfeng sunyongfeng 4096  5月 15 10:58 ..
drwxr-xr-x 2 sunyongfeng sunyongfeng 4096  5月 13 16:51 python2.7

lib:
总用量 16312
drwxr-xr-x  4 sunyongfeng sunyongfeng     4096  5月 13 16:51 .
drwxr-xr-x  6 sunyongfeng sunyongfeng     4096  5月 15 10:58 ..
-r-xr-xr-x  1 sunyongfeng sunyongfeng 16670684  5月 13 16:51 libpython2.7.a
drwxr-xr-x  2 sunyongfeng sunyongfeng     4096  5月 13 16:51 pkgconfig
drwxr-xr-x 28 sunyongfeng sunyongfeng    20480  5月 13 16:51 python2.7

share:
总用量 12
drwxr-xr-x 3 sunyongfeng sunyongfeng 4096  5月 13 16:51 .
drwxr-xr-x 6 sunyongfeng sunyongfeng 4096  5月 15 10:58 ..
drwxr-xr-x 3 sunyongfeng sunyongfeng 4096  5月 13 16:51 man
sunyongfeng@R04220:~/python-install$ 

装进放到目的机上,配置指标机的 PATH,加上 python 的 bin 目录。

7.geopy

地理(吉优graphy)对于程序员来说恐怕是3个装有挑战性的世界。不过 geopy
模块让它变得要命简单。

geopy 模块:https://geopy.readthedocs.io/en/latest/

$ pip install geopy

它经过抽取一多元区别地理编码服务的 API
来办事,使用户得到3个地点的完好街道地址、纬度、经度,甚至海拔高度。

其它二个立见成效的效劳是离开:它能够用你喜爱的心气单位测算出八个地点之间的离开。

from geopy import GoogleV3
place = "221b Baker Street, London"
location = GoogleV3().geocode(place)
print(location.address)
print(location.location)

 

问题

8.howdoi

陷入编码难题,却不记得在此以前见过的解决方案?须求检讨
StackOverflow,但不想离开终端?

那就是说您须要这么些有效的命令行工具:https://github.com/gleitz/howdoi

$ pip install howdoi

随便你有何样难点都足以问它,它会竭力回答。

$ howdoi vertical align css
$ howdoi for loop in java
$ howdoi undo commits in git

可是请留意——它会从 StackOverflow
的万丈票答案中抓取代码。也正是说它提供的信息并非总是实惠……

$ howdoi exit vim

 

编写翻译依赖

陆续编写翻译的时候,假设未有布置好 CFLAGS、LDFLAGS 之类的变量,大概找不到
python
编写翻译所正视的头文件或库文件。最终展现在编写翻译的结果(此处大概因区别的变量配置而差异):

Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _curses            _curses_panel   
_sqlite3           _ssl               _tkinter        
bsddb185           bz2                dbm             
dl                 gdbm               imageop         
linuxaudiodev      ossaudiodev        readline        
sunaudiodev        zlib                               
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
  • sqlite叁 注重配置

修改 python 源码根目录下的 setup.py 文件,在 detect_modules
函数下,找到 sqlite3 的头文件配置,添加上交叉编写翻译下的 sqlite二头文件目录。

        sqlite_inc_paths = [ '/usr/include',                                                        
                             '/usr/include/sqlite',                                                 
                             '/usr/include/sqlite3',                                                
                             '/usr/local/include',                                                  
                             '/usr/local/include/sqlite',                                           
                             '/usr/local/include/sqlite3',                                          
                           ]                                                                        
        if cross_compiling:                                                                         
            sqlite_inc_paths = [ '/home/sunyongfeng/workshop/prjheader/',
                                 '/home/sunyongfeng/workshop/prjheader/sqlite',
                                 '/home/sunyongfeng/workshop/prjheader/sqlite3',
                               ] 
  • ssl 注重配置

类似 sqlite3,在 setup.py 文件的 detect_modules 函数下,找到 ssl
相关的头文件与库文件配置,添加上交叉编写翻译下的 ssl 头文件与库文件目录。

        # Detect SSL support for the socket module (via _ssl)                                       
        search_for_ssl_incs_in = [                                                                  
                              '/usr/local/ssl/include',                                             
                              '/usr/contrib/ssl/include/',                                          
                              '/home/sunyongfeng/workshop/prjheader/',
                             ]                                                                      
        ssl_incs = find_file('openssl/ssl.h', inc_dirs,                                             
                             search_for_ssl_incs_in                                                 
                             )                                                                      
        if ssl_incs is not None:                                                                    
            krb5_h = find_file('krb5.h', inc_dirs,                                                  
                               ['/usr/kerberos/include'])                                           
            if krb5_h:                                                                              
                ssl_incs += krb5_h                                                                  
        ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,                                 
                                     ['/usr/local/ssl/lib',                                         
                                      '/usr/contrib/ssl/lib/',                                      
                                      '/home/sunyongfeng/workshop/prjrootfs/lib64'
                                     ] ) 
  • ncurses

维基百科
ncurses(new
curses)是贰个程序库,它提供了API,能够允许程序员编写独立于极端的依据文本的用户界面。它是贰个虚拟终端中的“类GUI”应用程式工具箱。它还优化了显示器刷新方法,以压缩使用远程shell时遇上的延期。

  • readline

设若 readline
模块编写翻译退步,会促成退格键、方向键等不可用。上边错误中”^”地方是退格键。
接力编写翻译 python 前亟待先编写翻译好 libreadline
,并将头文件和库文件放到默承认索引到的途径。

>>> print "abc"
  File "<stdin>", line 1
    print "abc"
               ^
SyntaxError: invalid syntax
>>> 

9.inspect

Python 的 inspect 模块分外有助于通晓难题背后的详情。你居然可以在 inspect
模块上调用其方法!

inspect 模块:https://docs.python.org/3/library/inspect.html

上面包车型地铁代码示例使用 inspect.getsource() 打字与印刷本身的源代码。它还采纳inspect.getmodule() 打字与印刷定义它的模块。

聊起底壹行代码打字与印刷出团结的行号。

import inspect
print(inspect.getsource(inspect.getsource))
print(inspect.getmodule(inspect.getmodule))
print(inspect.currentframe().f_lineno)

  

理所当然,除了那么些零碎的用处之外,inspect
模块还是能够扶助您知道代码正在做的事。你仍是能够用它编写自文书档案化代码。

环境变量

此时此刻还不驾驭怎么 export $PATH 后,运营 python 命令找不到 python lib
库,而且找不到 site 模块。而利用相对路径访问 python 未有失常态。

/tmp/bin # python
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
ImportError: No module named site

/tmp/bin # /tmp/bin/python
Python 2.7.11 (default, May 16 2016, 17:11:59) 
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

由此安顿环境变量化解:

export PYTHONHOME=/usr/lib/python2.7
export PYTHONPATH=.:$PYTHONHOME:$PYTHONHOME/site-packages
export PATH=$PATH:$PYTHONHOME:$PYTHONPATH

10.Jedi

Jedi 库是多个电动完结和代码分析的库。它使代码编写变得更加快、效果更加高。

除非您正在开发本身的 IDE,不然你势必会对应用 Jedi
库作为编纂插件很感兴趣。

Jedi:https://jedi.readthedocs.io/en/latest/docs/usage.html

您大概早就在选取 Jedi 了。IPython 项目就使用 Jedi 达成代码自动实现成效。

剪裁思量

  • lib/libpython2.7.a, 16M
  • lib/test, 30M

 11.**kwargs

学习别的语言时都会蒙受重重里程碑。对于 Python 来说,了然神秘的**kwargs
语法可能究竟个中之一。

词典对象前边的双星号能够让您把该词典的内容作为命名参数输入到函数中。

词典的秘钥是参数名,值是传递给函数的值。你依旧不须要称它为 kwargs!

dictionary = {"a": 1, "b": 2}
def someFunction(a, b):
    print(a + b)
    return
# these do the same thing:
someFunction(**dictionary)
someFunction(a=1, b=2)

 

当你想编写能够处监护人先未定义的命名参数的函数时,这么些很有用。

 

附1:Python 内建立模型块功效表明

一直引自 定制 Python 嵌入 C++: (4) 定制 Python
内建立模型块,内容恐怕已不合时宜,不过有参考价值。

  1. array (Modules/arraymodule.c)
    (http://docs.python.org/library/array.html)
    三个得以存放基本类型的急忙数组, 提供了和体系类似的操作.
    使用放法类似于 a = array.array(‘b’, [10, 20, 30]), 不常使用,
    能够设想去除.
  2. _ast (Python/Python-ast.c)
    (http://docs.python.org/library/ast.html)
    抽象语法树, 供 Python 程序解析处理 Python 语法相关的库,
    那几个模块的源代码是由脚本自动生成的. 由于 Python-ast.c
    自身还会被解释器的此外市点引用, 不可能去除, 所以,
    借使是为了减小解释器大小, 保留这几个库也不妨. 如若是为着定制 python
    的功效, 也得以屏蔽这几个库, 可是源代码供给保留, 无法从工程中删掉.
  3. audioop (Modules/audioop.c)
    (http://docs.python.org/library/audioop.html)
    1个节奏处理的库, 仅 Win3二 平台有效.
  4. binascii (Modules/binascii.c)
    (http://docs.python.org/library/binascii.html)
    提供2进制和 ASCII 码的变换, 会被 uu, base64, binhex 那个库引用.
    建议保留.
  5. cmath (Modules/cmathmodule.c)
    (http://docs.python.org/library/cmath.html)
    提供复数操作的函数
  6. errno (Modules/errnomodule.c)
    (http://docs.python.org/library/errno.html)
    提供专业的错误码定义, 在很多地点中都会选拔, 须求保留.
  7. future_builtins (Modules/future_builtins.c)
    (http://docs.python.org/library/future\_builtins.html)
    对这些在 Python二.x 和 Python三 中都有可是意义不等同的函数提供的包装.
    使用那里面包车型大巴函数能够确定保证调用了天经地义的版本的函数.
  8. gc (Modules/gcmodule.c)
    (http://docs.python.org/library/gc.html)
    Python 的排放物收集接口. 当然保留.
  9. imageop (Modules/imageop.c)
    (http://docs.python.org/library/imageop.html)
    一些图像处理的函数.
  10. math (Modules/mathmodule.c)
    (http://docs.python.org/library/math.html)
    提供了 C 标准库中的那么些数学函数.
  11. _md5 (Modules/md5module.c) 提供了 MD5 算法.
  12. nt (Modules/posixmodule.c) 1些操作系统习惯的函数, 比如打开文件等等.
  13. operator (Modules/operator.c)
    (http://docs.python.org/library/operator.html)
    提供了操作符的等价函数
  14. signal (Modules/signalmodule.c)
    (http://docs.python.org/library/signal.html)
    复信号机制, 提供异步事件的回调.
  15. _sha, _sha256, _sha512 二种 SHA 的加密算法模块.
  16. strop (Modules/stropmodule.c) 提供了1些优化的字符串操作.
    17.time (Modules/timemodule.c)
    (http://docs.python.org/library/time.html)
    时间操作库.
  17. thread (Modules/threadmodule.c) Python 线程的最底层模块, threading
    会使用 thread 库.
  18. cStringIO (Modules/cStringIO.c)
    (http://docs.python.org/library/stringio.html)
    StringIO 的飞跃版本.
  19. cPickle (Modules/cPickle.c)
    (http://docs.python.org/library/pickle.html)
    Python 的系列化模块.
  20. msvcrt (PC/msvcrtmodule.c)
    (http://docs.python.org/library/msvcrt.html)
    VC 运营时库的包装, 包含部分文本和荧屏操作函数.
  21. _locale (Modules/_localemodule.c) 提供本地化协助的模块.
  22. _subprocess (PC/_subprocess.c)
    (http://docs.python.org/library/subprocess.html)
    操作子进度的库, 平台相关的.
  23. _codecs (Modules/_codecsmodule.c)
    (http://docs.python.org/library/codecs.html)
    定义了 Python 的编码器相关接口.
  24. _weakref (Modules/_weakref.c)
    (http://docs.python.org/library/weakref.html)
    创立对象的弱引用.
  25. _hotshot (Modules/_hotshot.c)
    (http://docs.python.org/library/hotshot.html)
    类似于 Profiler 模块, 而且未来可能被移除, 未来把它去掉也不错.
  26. _random (Modules/_randommodule.c) 随机数模块.
  27. _bisect (Modules/_bisectmodule.c)
    (http://docs.python.org/library/bisect.html)
    三个根据二分算法, 能够让插入三个数据岛排序的队列后体系如故雷打不动的库.
  28. _heapq (Modules/_heapqmodule.c)
    (http://docs.python.org/library/heapq.html)
    完结堆栈数据结构算法的库.
  29. _lsprof (Modules/_lsprof.c)
    (http://docs.python.org/library/profile.html)
    Profiler 模块, 总计程序执行的质量.
  30. itertools (Modules/itertoolsmodule.c)
    (http://docs.python.org/library/itertools.html)
    壹些迭代器操作的模块.
  31. _collections (Modules/_collectionsmodule.c)
    (http://docs.python.org/library/collections.html澳门新萄京 ,)
    提供了多少个高级的器皿类.
  32. _symtable (Modules/symtablemodule.c)
    (http://docs.python.org/library/symtable.html)
    符号表管理模块.
  33. mmap (Modules/mmapmodule.c)
    (http://docs.python.org/library/mmap.html)
    文件内部存储器映射接济模块.
  34. _csv (Modules/_csv.c)
    (http://docs.python.org/library/csv.html)
    为 CSV 模块的里边帮助. CSV 模块提供了读写 CSV 文件的作用.
  35. _sre (Modules/_sre.c) 正则表明式的卓绝引擎.
  36. parser (Modules/parsermodule.c)
    (http://docs.python.org/library/parser.html)
    操作 Python 语法树的模块.
  37. _winreg (PC/_winreg.c) Windows 注册表操作模块.
  38. _struct (Modules/_struct.c) 提供在 Python 和 C
    之间变换数据类型的成效.
  39. datetime (Modules/datetimemodule.c)
    (http://docs.python.org/library/datetime.html)
    日期时间操作函数.
  40. _functools (Modules/_functoolsmodule.c)
    (http://docs.python.org/library/functools.html)
    函数相关操作模块.
  41. _json (Modules/_json.c)
    (http://docs.python.org/library/json.html)
    JSON 数据格式操作模块.
  42. xxsubtype (Modules/xxsubtype.c) 那是2个测试相关的模块. 运转test_descr.py 时会用到.
  43. zipimport (Modules/zipimport.c) 那么些模块首要用于从 zip 文件中程导弹入
    Python 的模块.
  44. zlib (Modules/zlibmodule.c) 这么些模块提供了 zip 压缩和平化解压功用, 基于
    GNU zip 达成.
  45. _multibytecodec, _codecs_cn, _codecs_hk, _codecs_iso2022,
    _codecs_jp, _codecs_kr, _codecs_tw (Modules/cjkcodecs/*)
    那几个模块提供了 CJK(中国和东瀛韩联合表意文字) 的编码和解码.
    去掉那有个别能够减小 python 解释器 600 多 K.
  46. marshal (Python/marshal.c)
    (http://docs.python.org/library/marshal.html)
    为 Python 对象提供类别化的模块.
  47. imp (Python/import.c)
    (http://docs.python.org/library/imp.html)
    那个模块提供了 Python 里的 import 语句的实现.
  48. main, builtin, sys, exceptions, _warnings 那有个别模块在
    config.c 设置里只是二个名字占位符.
  49. _io (Modules/_iomodule.c)
    (http://docs.python.org/library/io.html)
    新本子的 Python 输入输出模块, 在 Python 叁中为私下认可的输入输出处理方法.

发表评论

电子邮件地址不会被公开。 必填项已用*标注