Python高级编程第二版--笔记
不只是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高级编程第二版--笔记的更多相关文章
- python核心编程第二版笔记
python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d 提供调试输出1.2 –O 生成优化的字节码(生成 ...
- Python核心编程(第二版)PDF
Python核心编程(第二版) 目录 第1部分 Python核心第1章 欢迎来到Python世界1.1 什么是Python1.2 起源1.3 特点1.3.1 高级1.3.2 面向对象1.3.3 可升级 ...
- 拒绝从入门到放弃_《Python 核心编程 (第二版)》必读目录
目录 目录 关于这本书 必看知识点 最后 关于这本书 <Python 核心编程 (第二版)>是一本 Python 编程的入门书,分为 Python 核心(其实并不核心,应该叫基础) 和 高 ...
- Python核心编程第二版(中文).pdf 目录整理
python核心编程目录 Chapter1:欢迎来到python世界!-页码:7 1.1什么是python 1.2起源 :罗萨姆1989底创建python 1.3特点 1.3.1高级 1.3.2面向 ...
- UNIX环境高级编程第二版代码笔记
1. 第一个程序 gcc 1.1.c /tmp/ccbnJqcB.o: In function `main': 1.1.c:(.text+0x17): undefined reference to ...
- 面向对象——python核心编程第二版
类与实例 类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中所定义的对象的具体信息. class MyData(object): pass >>& ...
- python 核心编程第二版 课后习题 第11章
11-3 函数.在这个练习中,我们将实现 max()和 min()内建函数. (a) 写分别带两个元素返回一个较大和较小元素,简单的 max2()核 min2()函数.他们应该可以用任意的 pytho ...
- python 网络编程第二版
为服务端增加多进程解决方案 1.server端代码如下: #!/usr/bin/python #!coding:utf-8 import os,sys,time from socket import ...
- 《python核心编程第二版》第8章习题
8–1. 条件语句. 请看下边的代码 # statement Aif x > 0:# statement Bpasselif x < 0:# statement Cpasselse:# s ...
随机推荐
- CvArr、Mat、CvMat、IplImage、BYTE转换
一.Mat类型:矩阵类型,Matrix. 在openCV中.Mat是一个多维的密集数据数组. 能够用来处理向量和矩阵.图像.直方图等等常见的多维数据. Mat有3个重要的方法: ...
- fabricjs 自定义类型
https://stackoverflow.com/questions/36660108/how-to-create-custom-fabricjs-object I have to create a ...
- 使用Zxing 一维码
最近看到满大街的二维码扫码有惊喜,对二维码也有过一些了解,想看看到底是什么原理,在网上找了一些资料,自己弄了一个实例,采用的是MVC,贴出来分享一下 一维码生成 Controller public A ...
- 转:深度学习斯坦福cs231n 课程笔记
http://blog.csdn.net/dinosoft/article/details/51813615 前言 对于深度学习,新手我推荐先看UFLDL,不做assignment的话,一两个晚上就可 ...
- storage事件 js页面间通信
1.概述 https://developer.mozilla.org/en-US/docs/Web/Events/storage localStorage 或者sessionStorage存储的数据发 ...
- STL学习笔记(排序算法)
STL提供了好几种算法对区间内的元素排序.出来完全排序外,还支持局部排序. 对所有元素排序 void sort(RandomAccessIterator beg,RandomAccessIterato ...
- 关系型数据的分布式处理系统MyCAT(转载)
——概述和基本使用教程 日期:2014/12/24 文:阿蜜果 1. MyCAT概述 1.1 背景 随着传统的数据库技术日趋成熟.计算机网络技术的飞速发展和应用范围的扩充,数据库应用已经普遍建 ...
- mysql导出查询结果到文档
其实挺简单,就一个命令 select * from my_table into outfile '/tmp/abc.xls'; 然后就是ftp把文件弄回本地了.我的是程序自动放到C:\下 另外,还 ...
- C#中的隐藏方法
在C#中要重写基类的方法,C#提倡在基类中使用virtual来标记要被重写的方法,在子类也就是派生类中用voerride关键字来修饰重写的方法. 如果要是项目中前期考虑不足,我没有在基类(ClassA ...
- ArcObject IFeature set_Shape()和Delete()报错
这样的问题主要是Ifeature实际在数据库里面不存在!可是通过IFeatureClass.getFeature()又可以得到! 详细操作流程: 首先是对要素进行删除,可是通过IFeatureClas ...