不只是CPython

  • Stackless Python
  • Jython(与java集成)
  • IronPython(与net集成)
  • PyPy

python真正出众的领域在于围绕语言打造的整个生态系统。

PyPI包索引

python shell自定义

  • IPython
  • bpython
  • ptpython

交互式调试器--pdb

虚拟环境

  • virtualenv
  • venv:标准库提供的,和virtualenv用法几乎相同,pyvenv 名字
  • Vagrant

buildout:可用于引导启动并部署python编写的应用。

pip freeze:该命令可以打印出当前环境所有的python包,包括仅用于测试的。

有用的资源

  • Awesome-Python:包括流行包和框架列表
  • Python Weekly:每周向订阅者发送有趣的Python包和资源

不太明白

virtualenv完全依赖于在文件系统中的存储状态,不会提供额外功能来跟踪应该安装哪些包。这些虚拟环境不可移植,不能移动到其它系统或机器。 常规做法:将所有项目依赖保存到一个requirements.txt(约定命名)文件中,使用pip安装:pip install -r requirements.txt

  • 容器化和虚拟化

Python在创建这些数组时采用了指数过分配,所以并不是每次操作都需要改变数组大小。

  • 混合类

  • Python元编程(相当复杂)

集合、字典

CPython中的列表根本不是列表,被实现为长度可变的数组。
Python中的列表是由对其他对象的引用组成的连续的数组。

类装饰器闭包缺陷

类装饰器中这样使用闭包,生成的对象不再是被装饰的类的实例,而是装饰器中动态创建的子类的实例。

def paramrized_short_repr(max_width=8):
def paramrized(cls):
class ShortlyRepd(cls):
"""提供装饰器行为的子类"""
def __repr__(self):
return super().__repr__()[:max_width] return ShortlyRepd return paramrized @paramrized_short_repr(80)
class MyClass_Short:
pass print(MyClass_Short().__class__)

混入类

__new__使用场景

使用__new__()对python不可变的内置类型(int,str,float,frozenset)等进行子类化。因为一旦创建了这样不可变的对象实例,就无法在__init__()方法中对其进行修改。

何为可变不可变类型:https://blog.csdn.net/dan15188387481/article/details/49864613

__new__()不限于返回同一个类的实例,可能会滥用,所以要慎用。

__dict__

一个对象的属性查找顺序遵循首先查找实例对象自己,然后是类,接着是类的父类。

python2与python3元类语法

# python3
class ClassWithAMetaclass(metaclass=type):
pass # python2
class ClassWithAMetaclass(object):
__metaclass__ = type

使用兼容的包: from six import with_metaclass

class Meta(type):
pass class Base(object):
pass class MyClass(with_metaclass(Meta,Base)):
pass

name-mangling

name-mangling:名称改写或是名称修饰技术。

  • _xxx:表示内部使用,不能被from M import * 导入
  • xxx_:表示避免和关键字冲突
  • __xxx:更彻底的private,用到了name mangling技术,会自动加上类名前缀,不能被子类和类外部访问
  • _xxx_:魔术方法或用户控制的命名空间

Pythonic

Pythonic就是以Python的方式写出简洁优美的代码!

  • 优美
  • 明了
  • 简洁
  • 可读性很重要
  • .........

代码检测工具

  • PyLint
  • pep8

Python包构建

一个简单的实例

https://www.cnblogs.com/cposture/p/9029023.html

http://blog.konghy.cn/2018/04/29/setup-dot-py/

待续......................

Python高级编程第二版--笔记的更多相关文章

  1. python核心编程第二版笔记

    python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d   提供调试输出1.2 –O   生成优化的字节码(生成 ...

  2. Python核心编程(第二版)PDF

    Python核心编程(第二版) 目录 第1部分 Python核心第1章 欢迎来到Python世界1.1 什么是Python1.2 起源1.3 特点1.3.1 高级1.3.2 面向对象1.3.3 可升级 ...

  3. 拒绝从入门到放弃_《Python 核心编程 (第二版)》必读目录

    目录 目录 关于这本书 必看知识点 最后 关于这本书 <Python 核心编程 (第二版)>是一本 Python 编程的入门书,分为 Python 核心(其实并不核心,应该叫基础) 和 高 ...

  4. Python核心编程第二版(中文).pdf 目录整理

    python核心编程目录 Chapter1:欢迎来到python世界!-页码:7 1.1什么是python 1.2起源  :罗萨姆1989底创建python 1.3特点 1.3.1高级 1.3.2面向 ...

  5. UNIX环境高级编程第二版代码笔记

    1. 第一个程序 gcc 1.1.c  /tmp/ccbnJqcB.o: In function `main': 1.1.c:(.text+0x17): undefined reference to ...

  6. 面向对象——python核心编程第二版

    类与实例 类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中所定义的对象的具体信息. class MyData(object): pass >>& ...

  7. python 核心编程第二版 课后习题 第11章

    11-3 函数.在这个练习中,我们将实现 max()和 min()内建函数. (a) 写分别带两个元素返回一个较大和较小元素,简单的 max2()核 min2()函数.他们应该可以用任意的 pytho ...

  8. python 网络编程第二版

    为服务端增加多进程解决方案 1.server端代码如下: #!/usr/bin/python #!coding:utf-8 import os,sys,time from socket import ...

  9. 《python核心编程第二版》第8章习题

    8–1. 条件语句. 请看下边的代码 # statement Aif x > 0:# statement Bpasselif x < 0:# statement Cpasselse:# s ...

随机推荐

  1. python gzip压缩

    1 import urllib2 2 from StringIO import StringIO 3 import gzip 4 5 def loadData(url): 6 request = ur ...

  2. python实现scrapy爬取图片到本地时的sha1摘要算法文件名

    2017-03-29 Scrapy爬图片到本地应该会给图片自动生成sha1摘要算法文件名,我第一次用scrapy也不清楚太多,就在程序里自己写了一段实现这一功能的代码.需import hashlib ...

  3. 2017.7.25 jqGrid在编辑态无法获取数据,得到的是html代码

    页面如下: 勾选555之后,点击下方的删除按钮,调用如下代码: 最终调用的是jqGrid的getRowData()方法: 但是运行时发现,无法获取key的值,也就无法正确删除了.获取到的是html代码 ...

  4. 【使用 DOM】理解 DOM

    DOM(Document Object Model,文档对象模型)允许我们用 JavaScript 来探查和操作 HTML 文档里的内容.它对于创建丰富性内容而言是必不可少的一组功能. 1. 理解文档 ...

  5. JAVA Eclipse中的Android程序如何使用线程

    我们先单独定义一个java类,名字可以任意取(比如叫做ClientHeartBeat类,我当前在做一个socket通信的客户端,我们假定需要一个可以测试心跳的程序),注意他要继承Thread,然后重载 ...

  6. Python类定义和类继承详解

    类实例化后,可以使用其属性,实际上,创建一个实例之后,可以通过类名访问其属性,如果直接使用类名修改其属性,那么直接影响已经实例化的对象. 类的私有属性: __private_attrs 两个下划线开头 ...

  7. svn解决与优化帮助

    1.问题的出现 解决方案: 最后一行不能子目录. 启动的时候也是要根目录的.svnserve -d -r /home/svn/repos [不能是svnserve -d -r /home/svn/re ...

  8. AutoWare 使用

      1.安装readme当中的要求,安装依赖库   52 sudo apt-get install ros-indigo-desktop-full ros-indigo-nmea-msgs ros-i ...

  9. 涛哥的Python工具箱之批量删除含指定字符串行

    我们在软件研发中不可避免的要用到大量的反复性的繁琐的工作,比如批量改动代码中接口的字符串.批量下载文件并又一次按规则命名.这些工作人工做特别累,尤其是对我这样的懒人来说. 对于一个出色的程序猿来说,反 ...

  10. Online advertising术语

    做项目发现非常多Online Advertising术语不懂,看代码感觉不那么清晰,如今来总结下遇到的一些术语. ---------------------------- 1. Online Adve ...