作为“所谓码农”的首篇,本章内容理应涵盖基本编程技法。

Python这个东西、简洁,作为载体,是个不错的选择呦。

链接资源

Python 官方文档

廖雪峰的Python教程

Python 风格指南 - 内容目录

Python Cookbook 3rd Edition Documentation

书《Python金融大数据分析》

书《Python高性能编程》

1.基础变量


数字计算

Ref: [Python] 01 - Number and Matrix

一些常见的不熟悉的地方,详见链接。

一、表达

不同进制:0b123 0o123 0x123,对应的 ”char查看函数"ord('a'),chr(115) --> hex(id(iList))  # 只能对数字,不能对变量,例如错误的示范:hex('a')

大数:幂(**), e等

二、精度问题

# 专业的十进制
import decimal
# 专业的分数
from fractions import Fraction

三、数学系

python本身提供的三个常用库:math, random, statistics

随机数一般用一下原生的方法,更专业的还是建议使用更为专业的库。

当然,numpy 提供了更为系统的方案,主要是matrix运算。【需专项熟练 ...】

字符串处理

Ref: [Python] 02 - String

一、基本操作

是const类型,immutability。

字符串操作:strip().split() 比较常用,或者re.split(...), rstrip()。

二、打印与输出

输出到哪里:输出重定向

输出的格式:三种打印法

多行打印法:三个双引号

调试日志法:logging.XX

并行日志流:StreamHandler

三、正则匹配

正则表达式 - Regex,常用于文件筛选。

In [9]: >>> match = re.match('[/:](.*)[/:](.*)[/:](.*)', '/usr/home:lumberjack')
...:
...: >>> match.groups()
...:
Out[9]: ('usr', 'home', 'lumberjack')

另一个 “有点类似” 的是:filter(...)。

filter(fun, emails))  # fun 是个自定义的函数,对emails中的元素一次做判断,返回:True/False

2.高级变量


Ref: [Python] 03 - Lists, Dictionaries, Tuples, Set

非常类似C++ STL的思想。

列表

一、直接遍历并处理

只为循环

循环几次,并得到index

循环到头,while...else,for in...else

处理列表

简单处理:列表内lambda内搞定

复杂处理:map,但返回的是list

筛选处理:filter,但返回的是list

内部处理:reduce,直接返回结果,非obj。

排序处理:sorted,通过key引入lambda

二、间歇遍历

(a) next 一步步pick up列表元素。

(b) 先 yield 各个元素; 再通过 next 来 pick up元素。

字典

一、若干初始化方式

  • 显示初始化
  • 只有 key 值
  • key, value 都知道

dict内容的 update:包含 "append" & "update" 的功能

D.update(D2)

二、遍历方式

间接遍历:(1)单独输出所有的key;(2)单独输出所有的value;(3)单独输出所有的(key,value);

直接遍历:for...in...默认是获得key值。

三、经典问题:key值是否存在?

直接使用 for keys in/not in dict 速度比自带的 has_key 要快!

对于sparse matrix的表达优势。

元组

Tuples,不变性 immutability。

集合

“集合数学运算” 是个好东西:List 与 set 的相互转换。

3.文件、文件夹处理


文件夹搜索

Ref: [Python] 04 - os & sys module

获取:路径相关参数

判断:路径是否有效

搜索:文件夹层级数

提取:文件路径列表

筛选:文件有效路径

路径集合:listdir, walk

检查路径:os.path.exists --> os.path.isfile/os.path.isdir --> os.access

路径拆分:os.path.join --> os.path.split(), os.path.splittxt()

文件读写

Ref: [Python] 05 - Load data from Files

一、文件读写

(1) 安全读取:with...as...原理解析

(2) 缓存读取:readlines(...)

(3) 逐行处理:strip, rstrip

二进制文件读取

文件保存:pickle,json

二、数据集文件

CSV <---- Pandas Lib

Image <---- PIL Lib

三、数据集划分

常见数据集格式:.mat, .npz, .data

train_test_split(...)

4.面向对象


语句 statement & 函数 function

[Python] 07 - Statements --> Functions

一、语句

常见 reserved words。

二、函数

基本函数 --> 大函数返回小函数(工厂模式)--> 小函数改变外层大函数的变量。

传参问题:一个星号,两个星号。

键值参数:默认只初始化一次。

[Optimized Python] "Generator": calculating prime

三、生成器

迭代函数优化

四、装饰器

增强“无参”的原函数。

装饰器装饰“有参”函数。

装饰器本身带“参数”。

五、异常

多异常的两种写法;

异常基类;

类 class & 对象 object

[Python] 08 - Classes --> Objects

一、数据封装(Encapsulation )

权限控制:

私有化原理

对象成员限制

成员变量 Set & Get

类方法:

对比 静态方法

cls参数 - Factory method

字典属性:

查询/设置 “对象” de 属性&方法

“字典属性” 原理

运算符重载

二、继承(inheritance )

支持多继承:遵循从左到右的优先级顺序。

多继承歧义:菱形、倒三角。

三、多态(polymorphism)

父类作参数;鸭子类型。

实现一个类

[Advanced Python] 11 - Implement a Class

一、元类(metaclass)

type()创建、metaclass创建

应用案例:ORM

二、装饰器

使用类中的函数。

类作为装饰器。

函数装饰某个类。

三、datetime实现剖析

初始化示范

魔术方法讲解

[Advanced Python] 12 - Google style guide for programming

四、编程规范

Python语言规范

Python风格规范

注释之美

5.搭建工程


[Python] 06 - Modules --> Packages

模块 module & 包 package

一、模块的属性查看

模块的路径:sys.path.append()

模块的属性:__dict__

主程序模块:__main__,作为主文件启动时;reload(...) 时就是其他情况了呢。

  

二、调用模块

from <范围> import <功能> as <别名>,三种逐级导入方式。

三、__init__文件

放在项目哪里?

如何设置内容?

如何动态调用?

四、导入 C++

Python调用 .so

传参类型转化表

图片的传入传出

python调用C++中的类

五、脚本参数处理

ArgumentParser 使用案例

进阶部分


一、工程问题

[Link] 《大话设计模式》Python版代码实现(新增多年实践的心得)

二、优化问题

[Optimized Python] Bottle-neck in performance【测度瓶颈】

[Pandas] 01 - A guy based on NumPy【矩阵和矢量计算】

End.

[Code] 大蛇之数据工程的更多相关文章

  1. 第二篇:智能电网(Smart Grid)中的数据工程与大数据案例分析

    前言 上篇文章中讲到,在智能电网的控制与管理侧中,数据的分析和挖掘.可视化等工作属于核心环节.除此之外,二次侧中需要对数据进行采集,数据共享平台的搭建显然也涉及到数据的管理.那么在智能电网领域中,数据 ...

  2. DIKW模型与数据工程

    DIKW 体系 DIKW体系是关于数据.信息.知识及智慧的体系,可以追溯至托马斯·斯特尔那斯·艾略特所写的诗--<岩石>.在首段,他写道:“我们在哪里丢失了知识中的智慧?又在哪里丢失了信息 ...

  3. DIKW模型与数据工程(了解)

    DIKW 体系 DIKW体系是关于数据.信息.知识及智慧的体系,可以追溯至托马斯·斯特尔那斯·艾略特所写的诗--<岩石>.在首段,他写道:"我们在哪里丢失了知识中的智慧?又在哪里 ...

  4. 让大蛇(Python)帮你找工作

    前段时间用Python实现了一个网络爬虫(让大蛇(Python)帮你找工作),效率总体还可以,但是缺点就是每次都需要手动的去触发,于是打算对该爬虫加上Timer,经过网上一番搜索以及API的查询,发现 ...

  5. python 数据工程 and 开发工具Sublime

    数据工程采集.存储.清洗.分析.可视化 编程语言C++和Javapython大法Rweb:php.html.css.javascript 结合采集:python存储:python+数据库/.csv/t ...

  6. EntityFramework Code First便捷工具——数据迁移

    使用EntityFramework Code First开发,数据迁移是一个不得不提的技术. 在我们的开发过程中,难免需要对模型进行改进,模型改进后,会导致实体集与数据库不一致,当然我们可以通过删除数 ...

  7. JDBC:数据库操作:处理大对象CLOB数据

    目标: 了解大对象处理基本原理, 掌握CLOB数据的读,写操作. 可以使用CLOB类处理大文本数据. 大对象处理主要指CLOB和BLOB两种类型字段.可以大量存储文字. 要想在程序中处理这样的大数据操 ...

  8. Hibernate二进制或大文件类型数据和Oracle交互

    //测试存储二进制文件 @Test public void test() throws IOException{  InputStream in=new FileInputStream("E ...

  9. Entityframework Code First 系列之数据注释

    上一篇<Entityframework Code First 系列之项目搭建>讲了搭建一个Code First的控制台项目.里面有一些内容并没有扩展出来讲,因为篇幅有限.这篇针对上面内容中 ...

随机推荐

  1. 启xin宝app的token算法破解——逆向篇(二)

    启xin宝app的token算法破解--抓包分析篇(一)文章已经对该app进行了抓包分析,现在继续对它进行逆向. 对于一个app而言,我们要逆向app,需要知道什么呢? 逆向工具 Java基础,甚至c ...

  2. 马蜂窝视频编辑框架设计及在 iOS 端的业务实践

    (马蜂窝技术公众号原创内容,ID: mfwtech) 熟悉马蜂窝的朋友一定知道,点击马蜂窝 App 首页的发布按钮,会发现发布的内容已经被简化成「图文」或者「视频」. 长期以来,游记.问答.攻略等图文 ...

  3. Leetcode之回溯法专题-131. 分割回文串(Palindrome Partitioning)

    Leetcode之回溯法专题-131. 分割回文串(Palindrome Partitioning) 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回 s 所有可能的分割方案. ...

  4. VS Code 配置 Python 开发环境

    1.终端运行 Python2.安装 Python 插件3.查看.安装外部库4.代码补全工具5.代码检查工具5.1.pylint5.2.flake8 和 yapf 本文基于 VS Code 1.36.1 ...

  5. gym/101873/GCPC2017

    题目链接:https://codeforces.com/gym/101873 C. Joyride 记忆化搜索形式的dp #include <algorithm> #include < ...

  6. CodeForces 340E Iahub and Permutations 错排dp

    Iahub and Permutations 题解: 令 cnt1 为可以没有限制位的填充数字个数. 令 cnt2 为有限制位的填充数字个数. 那么:对于cnt1来说, 他的值是cnt1! 然后我们对 ...

  7. CF - 1106 E Lunar New Year and Red Envelopes DP

    题目传送门 题解: 首先要处理出每个时间点会选择哪一个线段. 对于这个问题,可以用multiset去维护信息. 当时间线开始的时候,往mutiset里面插入这个信息,当时间线结束的时候,删除这个信息. ...

  8. go 学习笔记之无心插柳柳成荫的接口和无为而治的空接口

    如果你还了解编程概念中的接口概念,那么我建议你最好还是先阅读上一篇文章.详情请点击 go 学习笔记之万万没想到宠物店竟然催生出面向接口编程? ,否则的话,请自动忽略上文,继续探索 Go 语言的接口有什 ...

  9. 封装返回给前台的json

    JsonResult类的定义: /*生成Json串*/ public class JsonResult { /** * 返回错误状态的json串 * * @param status 错误代码,非零数值 ...

  10. 实验吧CTF练习题---WEB---Forms解析

    实验吧web之Forms 地址:http://www.shiyanbar.com/ctf/1819 flag值:ctf{forms_are_easy}   解题步骤: 1.查看页面源代码,从中发现&q ...