接力编写翻译 python

  • 容易学习
  • 超高的通用性
  • 不无多量模块和库

print

导入交叉编写翻译 patch

参考自
python-2.7-001-support-for-build.patch,二.7.1壹的退换地方某些许扭转,详见如下 patch。

Python 即便应用 autoconf,可是实际上代码中曾经包括 configure
文件,由此下文代码给出的是修改 configure.ac 并执行 autoconf 后变化的
configure 文件。

patch 的利用格局,在 python 源代码根目录下施行:

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

python 贰.7.1一 交叉编写翻译 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

集合

https://docs.python.org/2/library/stdtypes.html\#set

25.YAML

YAML 代表 『YAML Ain』t 马克up Language』。它是壹种多少格式语言,是 JSON
的超集。

与 JSON
分化,它能够积累更扑朔迷离的靶子并引用本身的因素。你还足以编写制定注释,使其进一步适用于编写配置文件。

PyYAML 模块(https://pyyaml.org/wiki/PyYAMLDocumentation)可以让你在
Python 中央银行使 YAML。安装:

$ pip install pyyaml

  

接下来导入到项目中:

import yaml

  

PyYAML 使你可见存款和储蓄任何数据类型的 Python
对象,以及别的用户定义类其余实例。

 

26.zip

给您支最终一招,十三分酷。还在用七个列表来组合一部词典吗?

keys = ['a', 'b', 'c']
vals = [1, 2, 3]
zipped = dict(zip(keys, vals))

  

zip()
内置函数使用多少个可迭代对象作为输入并重临元组列表。各种元组按岗位索引对输入对象的成分实行分组。

您也能够由此调用*zip() 来「解压」对象。

选自FreeCodeCamp

作者:Peter Gleeson

Python学习交换群:54837787伍

机器之心编译。

原稿链接:https:// class=”visible”>medium.freecodecamp.org class=”invisible”>/an-a-z-of-useful-python-tricks-b467524ee747

在给定集结中找到重复的票房价值相当的低。即便有万亿UUID,重复存在的可能也远远低于10亿分之壹。

编写翻译本地 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

pyquery

https://pypi.python.org/pypi/pyquery
api :
http://pyquery.readthedocs.org/en/latest/api.html

TypeError: Type ‘unicode’ cannot be serialized.

给两个list,一个是word list, 一个是prefix list return 所有的word that
have the prefix 例子: word list = [“a”, “abc”, “dz”, “dda], prefix
list = [“ab”, “dd”] return [“abc”, “dda”]

Python干货精选
http://baoz.me/446252
当自身说小编会Python时,实际上作者会了哪些?

10.Jedi

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

只有你正在开荒和煦的 IDE,不然你早晚上的集会对应用 Jedi
库作为编纂插件很感兴趣。

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

你恐怕已经在使用 Jedi 了。IPython 项目就接纳 Jedi 实当代码自动实现效用。

Python通过众多平放功用支撑函数式编制程序。个中最管用的是map()函数 –
尤其是与lambda函数结合使用。x = [1, 2, 3]

问题

遍历目录

os.walk

import os,sys
for root, dirs, files in os.walk("."):
for f in files:
fullpath = "%s/%s" % (root, f)
if fullpath.endswith("java"):
print fullpath
#os.system("dos2unix " + fullpath)
temp = fullpath[:-1]
#command = "expand -t 4 " + fullpath + " > " + temp
command = "rm -rf " + fullpath
command = "sed -i 's/ *$//' " + fullpath
#print command
os.system(command)

Python 是世界上最风靡、火热的编制程序语言之1,原因繁多,举例:

幸运的是,Python标准库提供了聚众模块。那么些便利的增大组件为你提供了愈多的数据类型。from
collections import OrderedDict, Counter

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

平素引自 定制 Python 嵌入 C++: (肆) 定制 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)
    一个旋律管理的库, 仅 Win32 平台有效.
  4. binascii (Modules/binascii.c)
    (http://docs.python.org/library/binascii.html)
    提供二进制和 ASCII 码的转移, 会被 uu, base6四, 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 和 Python3 中都有不过意义不一致的函数提供的包装.
    使用那中间的函数能够保证调用了不利的本子的函数.
  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) 一些操作系统习于旧贯的函数, 比方张开文件等等.
  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) 提供了一部分优化的字符串操作.
    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) 那是3个测试相关的模块. 运维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 叁中为暗许的输入输出管理方法.

python-books:

how to think like a computer scientist :
http://www.greenteapress.com/thinkpython/thinkCSpy.pdf

算法
python 字典(dict)开关和值排序

http://www.cnpythoner.com/post/266.html

正文将分享部分用到 Python 的本领,顺序依照 A-Z 排列。

>>> print

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 文件。x八陆的暗中认可编写翻译会编写翻译到必须的模块,而 mips6四 的穿插编写翻译多数模块未有编写翻译下,如
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

Python 编码

  1. a = u’ab’
    b = “ab”
    怎么互转?
  2. unicode声明

# -*- coding: utf-8 -*-
  1. join unicode

  2. 用chardet检查测试编码格式

16.pprint

Python 的暗中同意 print
函数即可兑现打字与印刷功效。但若是尝试打字与印刷十分的大的嵌套对象,就会意识打字与印刷结果非常不赏心悦目。

这时候 Python 规范库的 pretty printer
模块就能够发挥成效了。该模块能够将复杂的结构化对象以一种易读的格式打字与印刷出来。

pretty printer 模块:https://docs.python.org/3/library/pprint.html

Python 开辟者的不可缺少技能之一正是管理丝丝缕缕的数据结构。

import requests
import pprint
url = 'https://randomuser.me/api/?results=1'
users = requests.get(url).json()
pprint.pprint(users)

 

在Python中定义类或对象时,提供一种将该目标表示为字符串的“官方”方法很有用。比方:>>>
file = open(‘file.txt’, ‘r’)

参考文献

  • 定制 Python 嵌入 C++: (四) 定制 Python
    内建立模型块
  • build python 2.7.11 for
    mips
  • Python
    Deployment
  • How to cross compile python for
    MIPS
  • python-2.7-001-support-for-build.patch

列表生成

http://www.cnblogs.com/moinmoin/archive/2011/03/10/lsit-comprehensions-generators.html

 2.bashplotlib

想在调整马普托绘图吗?

$ pip install bashplotlib

 

利用方面包车型大巴行,就可以在调控巴尔的摩绘图。

 

提起底,优先级队列允许你依照目的的排序依次检索对象。

编写翻译依赖

交叉编写翻译的时候,假诺未有配备好 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
函数下,找到 sqlite三 的头文件配置,增多上交叉编译下的 sqlite3头文件目录。

        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
>>> 

性能:

High Performance Python: Practical Performant Programming for
Humans

7.geopy

地理(吉优graphy)对于程序猿来说大概是三个存有挑衅性的圈子。但是 geopy
模块让它变得十分轻易。

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

$ pip install geopy

它通过抽取一八种差别地理编码服务的 API
来行事,使用户获得2个地点的完全街道地址、纬度、经度,以致海拔中度。

其它1个实惠的效益是离开:它能够用你喜爱的心气单位总括出八个岗位之间的偏离。

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

 

实际,能够转换超过2 1二十五个只怕的UUID。这超越5亿10亿(或5,000,000,000,000,000,000,000,000,000,000,000,000,000)。

陈设交叉编写翻译情况变量

比如 CC、CFLAGS、LDFLAGS 等。

profile:

7 个衡量 Python 脚本和决定内存以及 CPU
使用率的才具

random

14.newspaper3k

设若你后面未曾见过它,那么笔者建议您先查看:https://pypi.org/project/newspaper3k/。

它可以帮忙你从多量一级国际出版物中研究到音讯小说和连锁元数据。你能够搜索图像、文本和笔者名。

它还有一些放手的 NLP 作用。

地址:https://newspaper.readthedocs.io/en/latest/user\_guide/quickstart.html\#performing-nlp-on-an-article

如果你想在下多个连串中应用 BeautifulSoup 或别的 DIY
网页抓取库,那么不及运用$ pip install
newspaper三k,既省时又便捷,何乐不为呢?

 

学习其余语言时,沿途都有成都百货上千里程碑。使用Python,领会神秘的**kwargs语法只怕算作一个。

附二:Python 最棒编写翻译依赖

平昔译自 Python
Deployment。

键入如下命令自动安装一些依赖:

$ sudo apt-get build-dep python2.7

确认安装如下列下的其他 -dev 包。

  • python-dev
  • libncurses5-dev
  • libsqlite3-dev
  • libbz2-dev
  • libreadline-dev
  • libdb4.8-dev
  • tcl8.5-dev,tk8.5-dev

上面这么些包在 ubuntu 早期版本(如 十.04)并未活动安装,需确认一下。

  • libssl-dev
  • libexpat1-dev
  • libreadline6-dev
  • libgtk2.0-dev

假如想援救 xml 相关:

  • libxml2-dev
  • libxslt1-dev

倘使想接济 MySQLdb (在 pypi 中其实命令为 MySQL-python):

  • libmysqlclient-dev

谈起底的 make 结果(编写翻译结果)如能如下:

Python build finished, but the necessary bits to build these modules were not found:
_tkinter           bsddb185           dl
gdbm               imageop            sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

其一编写翻译 log
提示哪些模块未有被编写翻译到,注意当中有局地并不是必需的或过时的:

  • bsddb185: Older version of Oracle Berkeley DB. Undocumented. Install
    version 4.8 instead.
  • dl: For 32-bit machines. Deprecated. Use ctypes instead.
  • imageop: For 32-bit machines. Deprecated. Use PIL instead.
  • sunaudiodev: For Sun hardware. Deprecated.
  • _tkinter: For tkinter graphy library, unnecessary if you don’t
    develop tkinter programs.

类型

19.sh

Python 是壹种壮烈的脚本语言,不过有时利用正式 os 和 subprocess
库会有点棘手。

sh 库提供了1种科学的替代方案。

sh 库:http://amoffat.github.io/sh/

该库允许用户像使用普通函数同样调用放肆程序,那对自动化专门的学业流和任务分外管用。

from sh import *
sh.pwd()
sh.mkdir('new_folder')
sh.touch('new_file.txt')
sh.whoami()
sh.echo('This is great!')

 

从Python 三.伍从头,您能够选择在概念函数时提供品类提醒。def addTwo ->
Int:

剪裁思量

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

高阶函数:

functools:
https://docs.python.org/2/library/functools.html

函数嵌套:
http://effbot.org/pyfaq/how-do-you-make-a-higher-order-function-in-python.htm

 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")

  

说起底一行代码打字与印刷出团结的行号。import inspect

安装

命令 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 目录。

hash表:

dict:
https://docs.python.org/2/library/stdtypes.html\#dict

5.emoji

没有错,真的有。请点击那里:https://pypi.org/project/emoji/

$ pip install emoji

 

别以为自己不精通您会偷偷试它→→

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

👍

 

本来,除了这个微不足道的用途之外,检查模块对于精通代码的意义尤其实用。您也得以动用它来编排自己记录代码。

蒙受变量

当下还不精晓为何 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

Pip

hash not match:
http://stackoverflow.com/questions/16025788/why-does-pip-fail-with-bad-md5-hash-for-package\#

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

 

result_row =[]

创建 build 目录

在 python 源代码下开创 build-pcbuild-mips 目录,分别用于编写翻译 PC
pgen(交叉编译时用到)与接力编写翻译 mips python。该目录做
configure、make、make install,编写翻译时用来保存一时半刻转移的文件,保障 python
源代码干净。

awesome-python : https://github.com/vinta/awesome-python

 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)

 

当您想编写能够处监护人先未定义的命名参数的函数时,那一个很有用。

 

if any and not all:

下载、解压 python 源代码

从 python.org 下载。

Python编码

21.uuid

转移通用唯一标记符(Universally Unique
ID,UUID)的一种高效轻便方法正是运用 Python 标准库的 uuid 模块。

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

import uuid
user_id = uuid.uuid4()
print(user_id)

  

那开创了三个随机化后的 12八 比特数字,该数字差不离分明是唯一的。

其实,能够生成 二¹²²或者的 UUID。这几个数字当先了
五,000,000,000,000,000,000,000,000,000,000,000,000。

在加以集结中找寻重新数字的只怕非常的低。尽管有10000亿
UUID,重复数字存在的可能率也远远低于10亿分之一。

 

zipped = dict(zip(keys, vals))

配置

常用模块

bitarray : bit操作

profile:
memory_profiler

23.wikipedia

Wikipedia 具有叁个很棒的
API,允许用户以编制程序情势访问伟大意量的免费知识和音信。

wikipedia 模块使得访问该 API 极度便利。

Wikipedia 模块:https://wikipedia.readthedocs.io/en/latest/quickstart.html

import wikipedia
result = wikipedia.page('freeCodeCamp')
print(result.summary)
for link in result.links:
    print(link)

  

和真正的维基百科网站类似,该模块匡助多种语言、页面消歧、随机页面检索,以至还具有donate() 方法。

 

维基百科有3个很棒的API,允许用户以编制程序格局访问无与伦比的完全无需付费的学问和消息。

编译

简单的 make 命令即可。

Python数据结构

4.dir

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

输入以下命令行:

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

当以交互方式运营 Python
时,那说不定是1个十分实惠的法力,并且能够动态地研究你正在采用的靶子和模块。

想要精晓愈多,点这里:https://docs.python.org/3/library/functions.html\#dir

 

__repr__

本文来源
小编的博客。博客的文章保持更新,此文或许不是新型意况。

python的函数本性

  1. map

24.xkcd

humour 是 Python
语言的贰个要害性格,其名称来自英国动作片《蒙提·派森的飞行马戏团》(Monty
Python and the Flying Circus)。Python
的很多合法文书档案引用了该动作片最知名的逸事故事情节。

风趣感并不防止文书档案。试着运转下列行:

import antigravity

  

将开垦 xkcd 画的 Python 漫画。不要改换那点,Python。不要退换。

 

cities = [‘London’, ‘Dublin’, ‘Oslo’]

列表

总是列表
[1 ,2, 3 ] + [4, 5, 6] = [1, 2, 3, 4, 5, 6]

被人工智能捧红的 Python
已是1种升高宏观且万分八种化的语言,个中料定有1对您从未意识的功力。本文只怕能够让你学到一些新才具。

place = “221b Baker Street, London”

一伍.运算符重载(Operator overloading)

Python 扶助运算符重载。

它实际是三个轻松的概念。你有未有想过为啥 Python 允许用户使用 +
运算符来将数字相加,并级联字符串?那便是运算符重载在发挥效用。

你能够行使 Python
的行业内部运算符号来定义对象,那样您能够在与这一个目的相关的语境中应用它们。

class Thing:
    def __init__(self, value):
        self.__value = value
    def __gt__(self, other):
        return self.__value > other.__value
    def __lt__(self, other):
        return self.__value < other.__value
something = Thing(100)
nothing = Thing(0)
# True
something > nothing
# False
something < nothing
# Error
something + nothing

 

它们还允许你使用项目检查工具在运作时捕获那么些杂散的TypeErrors。假使你正在开始展览大型复杂项目,那或许是值得的!

13.map

Python 通过广大放权作用支撑函数式编制程序。map()
函数是最得力的函数之1——尤其是当它与 lambda 函数结合使用时。

lambda 函数:https://docs.python.org/3/tutorial/controlflow.html\#lambda-expressions

x = [1, 2, 3]
y = map(lambda x : x + 1 , x)
# prints out [2,3,4]
print(list(y))

  

在地点的例证中,map() 将叁个大约的 lambda 函数应用于 x
中的每一个成分。它回到二个 map
对象,该目的足以被调换来可迭代的靶子,如列表或元组。

 

result = []

1贰.列表推导式(List comprehensions)

自身最欢乐 Python 编制程序的原委之壹是它的列表推导式(https://docs.python.org/3/tutorial/datastructures.html\#list-comprehensions)。

那几个表明式使得编写干净易读的代码变得很轻易,那一个代码读起来差不多像自然语言同样。

至于它们的越多选撤废息请查看:https://www.learnpython.org/en/List\_Comprehensions

numbers = [1,2,3,4,5,6,7]
evens = [x for x in numbers if x % 2 is 0]
odds = [y for y in numbers if y not in evens]
cities = ['London', 'Dublin', 'Oslo']
def visit(city):
    print("Welcome to "+city)
for city in cities:
    visit(city)

 

您有望在其余时候都在拍卖七个Python项目。不幸的是,有时多个类型将依据于同一依赖项的比不上版本。你在系统上安装了什么?

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!")

   

在维基百科模块,使访问该API差不多令人始料比不上的便利。import wikipedia

18.__repr__

在 Python
中定义多个类型或对象时,以「官方」方式将目的表示为字符串很有用。比方:

>>> file = open('file.txt', 'r')
>>> print(file)
<open file 'file.txt', mode 'r' at 0x10d30aaf0>

  

那使代码 debug 变得轻易大多。将字符串增多到项目定义,如下所示:

class someClass:
    def __repr__(self):
        return "<some description here>"
someInstance = someClass()
# prints <some description here>
print(someInstance)

 

location = GoogleV3().geocode

6.from __future__ import

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

不过,别担心。__ future__模块允许用户导入新版 Python
的效能。那几乎就好像时间游览,也许法力什么的。

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

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

  

something = Thing

17.Queue

Python 协助10二线程,而这是由 Python 标准库的 Queue 模块辅助的。

该模块允许用户实现队列(queue)数据结构。队列数据结构允许用户根据特定的平整增多和搜索条款。

『First in, first out』 (FIFO)
队列允许用户依照目的被抬高的相继来搜求对象。『Last in, first out』
(LIFO) 队列允许用户率先走访最新扩张的目标。

末尾,优先级队列(priority
queue)允许用户依照目标对应的事先级档案的次序来查找对象。

怎样运用 queue 在 Python 中贯彻十贰线程编制程序,示例详见:https://www.tutorialspoint.com/python3/python\_multithreading.htm。

 

你能够在那边详细精晓什么运用它们。numbers = [1,2,3,4,5,6,7]

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
模块还是可以够援助您精通代码正在做的事。你还是能用它编写自文书档案化代码。

print

22.虚拟情形(Virtual environment)

这说不定是 Python 中本人最欣赏的事物了。

您也许同时处理三个 Python
项目。不幸的是,有时候八个类型依赖于同一注重项的不等版本。那您要设置哪个版本呢?

幸运的是,Python
协助虚拟景况,这使得用户能够丰富利用二种处境。见下列行:

python -m venv my-project
source my-project/bin/activate
pip install all-the-modules 

  

后天你在壹台机械上保有独立的多个 Python 版本了。难点消除!

 

user_id = uuid.uuid4()

20.类型提示(Type hints)

Python 是动态语言。在概念变量、函数、体系等时无需点名数据类型。

那便于收缩开垦周期。可是,轻松的类型错误(typing
issue)导致的运行时不当真的太烦了。

从 Python 三.5 版本开首,用户能够挑选在概念函数时展开类型提醒。

def addTwo(x : Int) -> Int:
    return x + 2

  

您还能定义类型小名:

from typing import List
Vector = List[float]
Matrix = List[Vector]
def addMatrix(a : Matrix, b : Matrix) -> Matrix:
  result = []
  for i,row in enumerate(a):
    result_row =[]
    for j, col in enumerate(row):
      result_row += [a[i][j] + b[i][j]]
    result += [result_row]
  return result
x = [[1.0, 0.0], [0.0, 1.0]]
y = [[2.0, 1.0], [0.0, -2.0]]
z = addMatrix(x, y)

  

就算非强制,但品种注释可以使代码更易明白。

它们还允许你在运作在此以前运用项目检查工具捕捉
TypeError。在进展大型复杂项目时实践此类操作是值得的。

 

sh.whoami()

# True

something + nothing

inspect 检查

url = ”

$ howdoi for java in java

evens = [x for x in numbers if x % 2 is 0]

for i,row in enumerate:

不过,不要惧怕。该__future__模块,让你能够用Python导入现在版本的成效。它实际上仿佛时间游历,魔术或其余东西。from
__future__ import print_function

something < nothing

print

用作数据化学家的自家,每一日使用Python是自己内在办事的1有的。在这几个历程中,小编学会了一些有效的本领和经验。

import pprint

def someFunction:

print(location.address)

然后您供给以此有效的命令行工具。$ pip install howdoi

pip install all-the-modules复制代码

uuid

它很容命理术数习

def __init__(self, value):

下边包车型大巴代码示例inspect.getsource()用于打字与印刷本身的源代码。它还inspect.getmodule()用于打字与印刷定义它的模块。

print(inspect.getmodule(inspect.getmodule))

字典的键是参数名称,值是传递给函数的值。你以至不要求叫它kwargs!dictionary
= {“a”: 1, “b”: 2}

该zip()内置函数须要一三种可迭代的目标,并赶回3个元组列表。每个元组按岗位索引对输入对象的成分进行分组。

def addMatrix(a : Matrix, b : Matrix) -> Matrix:

someFunction

发表评论

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