[Code] 大蛇之数据工程

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

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

 

链接资源

Python 官方文档

廖雪峰的Python教程

Python 风格指南 - 内容目录

Python Cookbook 3rd Edition Documentation

书《Python金融大数据分析》

书《Python高性能编程》

django-rest基础教程以及drf电商实战小项目

沈弘哲的频道 - 系列

django-rest-framework-tutorial

docker-django-nginx-uwsgi-postgres-tutorial

docker-django-nginx-uwsgi-postgres-load-balance-tutorial

docker-elk-tutorial [Elasticsearch + Logstash + Kibana]

  

面试题

Goto: [Interview] Junior-mid questions

 

自我反省

如何写出优秀的Python Code,重难点列在这里。

1.基础变量

数字计算

一、表达

二、精度问题

三、数学系

字符串处理

一、基本操作

二、打印与输出

三、正则匹配

 

2.高级变量

列表

一、直接遍历并处理

二、间歇遍历

字典

一、若干初始化方式

二、遍历方式

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

元组

集合

 

3.文件、文件夹处理 

文件夹搜索

文件读写 

一、文件读写

二、数据集文件

三、数据集划分

 

4.面向对象

语句 statement & 函数 function

一、语句

二、函数

三、生成器

四、装饰器

类 class & 对象 object

一、数据封装(Encapsulation )

二、继承(inheritance ) 

三、多态(polymorphism) 

实现一个类

一、元类(metaclass)

二、装饰器

三、datetime实现剖析

四、编程规范

 

5.搭建工程

模块 module & 包 package

一、模块的属性查看

二、调用模块

三、__init__文件

 

 

 

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的表达优势。

d.get(c, n)  # 如果 d[c]有,返回之;没有则返回一个默认值 n

 

 

  

元组

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__文件

放在项目哪里?

如何设置内容?

如何动态调用? 

 

 

 

进阶部分


一、工程问题

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

  • TDD REST API

[Link] Test-Driven Development with Django, Django REST Framework, and Docker【Django技术栈列表不错】 

[Link] Test-Driven Development with Python, Flask, and Docker【Flask技术栈不错】

[Link] https://flask-restx.readthedocs.io/en/latest/【flask-restx文档】

[Advanced Python] Test-Driven Development with Python, Flask, and Docker【rest, test, cmd】

[Advanced Python] Exceptions【Exception 基础】 

[Advanced Python] Find exceptions and tell me in the right way【Exception 经验总结】 

 

二、高级Python编程

[Link] Python3 Advanced Tutorials

[Link] Github: Advanced-Python-Tutorial

[Link] Python面向对象

 

三、优化问题

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

[Pandas] 01 - A guy based on NumPy【效率进化、矩阵和矢量计算】

 

四、底层原理

[Link] ctypes made easy【与c语言的桥梁关系】

[Advanced Python] Call C++ libraries

 

五、练手刷题

[Interview] Junior-mid questions

[Link] https://github.com/zhantong/leetcode【代码】

[Link] https://leetcode.com/problemset/all/【原题】

[Link] Leetcode 讲解 1-300【视频讲解】

[Link] Leetcode 讲解 301-600【视频讲解】

[Link] Python标准库 - 数据类型【类似c++中的标准模板库 STL】

 

End.

posted @   郝壹贰叁  阅读(254)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示