--

这就是平时的工作方式。vim写python,没安装其他插件,但有自己的配置文件。

常见的项目所常用的函数很难超过50个。大量的业务函数一旦被写出来就是负责直接处理业务,而不会被其他部分调用,这些是不需要背的。

再把自己写的共享函数库整理好,往往常用函数不到10个。应用模块里引用框架级别的函数也就是二三十个的级别。加上数据中间层,设计好规范后,能背下来必要的数据表就能联想到对应的接口。

所以,一个不过2万行代码的python项目。实际需要背的函数也就是50个左右。

-- 1小时的分割线 --

补充个我当前公司所开发的一个小型项目。相当于是一个网站,以及给客户端软件提供ajax api的服务器。一共10个python文件。4357行。以下逐个文件分析,但不会暴露实际代码。

1. rtb.py:75行,程序启动文件,其内的多种调用基本上就是一锤子的,即可以参考文档写完,但项目其他地方不会被使用,且作为启动文件,其本身也不会被引用。该文件的主要作用就是引用一大堆其他应用的模块,做URL分派。我因为在项目里同时使用了web.py和flask,所以多花了一点代码来做WSGI兼容两个框架的支持。

2. setting.py:56行,设置文件,也可以理解为一锤子的,而且通用性更强,每次开个新的项目,大可以把以前的配置文件抄过来,只修改必要的部分就可以用了。仅有的两处小技巧是 socket.gethostname()获得机器名后区分配置文件的环境,用以避免上线时的混乱。以及获得设置文件的当前绝对路径,供其他路径相关的操作:

CURPATH=os.path.normpath(os.path.join(os.getcwd(),os.path.dirname(__file__)))

3. shareutil.py:275行,web.py框架相关的自定义共享库,给各个应用模块提供相关支持。所以这里的函数是需要背下来的,在其他模块里比较常用的。比较常用的就是登录验证相关的:

1. BasicAuthError:自定义的异常用来强迫用户使用basic auth登录,内部系统的好方法

2. needlogin_401():装饰器函数,用于让视图先判断是否需要用户登录,如果未登录就用HTTP 401来强迫用户登录

3. settestlogin_401():设置单元测试时所用的basic auth的header

4. checklogin_header:检查header方式设置登录的,这对于javascript使用跨域header方式验证身份很必要

5. setlogin_header:设置登录header的方式,返回个字符串给客户端

6. checklogin_cookie:检查cookie方式是否登录了,返回登录信息

7. needlogin_cookie:检查视图是否登录,未登录则重定向到登录页

8. setlogin_cookie:设置cookie为登录

9. setlogout_cookie:设置cookie注销

10. logined_cookie:给单元测试提供已经登录的一个cookie

11. catcherror:装饰器,用于捕获视图的异常,并显示为出错页面

12. load_sqla:应用启动时,给上下文提供载入数据库

13. ApiResponse:我自己定义的JSON响应结构,方便构造ajax api

14. dt_to_isotime:把datetime对象转换为ISOTIME格式字符串

15. dt_to_ts:把datetime对象转换为timestamp数字

16. BootstrapForm:继承自webpy的Form的表单,提供了渲染带有Bootstrap class的支持

所以根据如上分析,一个项目中常用的也就是三种登录的一种,对应了函数的needlogin、setlogin、setlogout,三个函数。涉及常用数据库操作、ajax api的也有三个。总计6个函数需要背。

4. model.py:421行数据模型,里面有十几行一锤子的引用,标准化程度高,可以在项目之间共用。给每个字段提供类型的需要背一下相关参数,这样工作效率会高。典型的字段类型如VARCHAR、INTEGER、PRIMARYKEY、TIMESTAMP,可以算作是四个函数需要背。同时这里定义了7个表格,背下来对应用的编写有较大帮助。

5. flaskutil.py:169行。给flask框架用的共享库。给其他模块复用的概率大的多。

1. setlogin_cookie:设置cookie方式已登录

2. setlogout_cookie:设置cookie方式注销

3. needlogin_cookie_header:用OR方式检查cookie或header是否包含有效登录信息

4. setlogin_header:设置登录过的头,用以单元测试

5. make_before_request:给每个会话设置数据库会话

6. teardown_request:在会话结束时清理数据库资源

7. api_response:提供JSON格式的ajax api响应所需的函数

所以如上可以看到所有这些函数与shareutil有很大重复。这里不再计入需要背的数量。

6. app_api.py:1405行。ajax api的实际实现,使用了webpy框架。这里引用的部分不再重复,反正也是要被放弃的。写了26个API,他们都是直接被暴露出去,不会被其他模块调用,所以没必要背。

7. app_compiler:一个编译器代理,太窄的方向没必要分析。

8. app_home.py:361行。主页和登录逻辑。主要提取一下Flask框架里常用而值得背的几个函数:

1. render_template:渲染模板的,很简单

2. redirect:重定向

3. abort:生成错误页面

4. Response:生成格式可定制的响应

5. g:会话相关的全局变量

所以对于常用Flask框架的,这5个函数就需要特别熟悉。

9. app_mgnt.py:871行。管理后台,也是常见的业务模块,所以互相之间无依赖,使用到的flask功能也同上,不过这里开始使用Flask的Form,所以需要记住一些常用的字段类型:TextField、PasswordField、IntegerField、BooleanField、SelectField、TextAreaField,有6个。

10. app_teacher.py:366行。一个业务管理模块,没啥新意。

所以根据如上项目的分析可见,需要背下来的函数主要是在项目里需要使用多于1次的。包括框架的功能和自己写的共享库等。累计下来一共30个函数或对象。背30个函数可真是没难度的。

-- 补充 --

web.py的作者去世多年,之后有些人尝试维护,但维护水平实在不敢恭维。至今在表单缺字段的处理,单元测试中set-cookie支持等存在缺陷。所以尽管我很喜欢这个框架的思路,但以后不会再用了。

python代码需要背吗-Python 的库、方法这么多,写程序的时候能记住吗?相关推荐

  1. python代码需要背吗-Python面试必须要看的15个问题

    引言 想找一份Python开发工作吗?那你很可能得证明自己知道如何使用Python.下面这些问题涉及了与Python相关的许多技能,问题的关注点主要是语言本身,不是某个特定的包或模块.每一个问题都可以 ...

  2. python代码需要背吗-python代码运行需要编译吗

    有人在讨论 Python 代码是编译执行还是解释执行?这个问题还可以换一种说法: Python 是编译型语言还是解释型语言?回答这个问题 前,我们先弄清楚什么是编译型语言,什么是解释型语言. 所谓编译 ...

  3. python代码需要背吗-python程序需要编译吗

    Python是编译型语言还是解释型语言?回答这个问题前,应该先弄清楚什么是编译型语言,什么是解释型语言. 所谓编译执行就是源代码经过编译器编译处理,生成目标机器码,就是机器能直接运行的二进制代码,下次 ...

  4. python代码需要背吗-Python代码需要缩进吗

    Python则是通过缩进来识别代码块的. 缩进 Python最具特色的是用缩进来标明成块的代码.我下面以if选择结构来举例.if后面跟随条件,如果条件成立,则执行归属于if的一个代码块. 先看C语言的 ...

  5. python第三方库文件传输_本地 Python 代码上传到 Python 第三方库(Pypi)

    程序员对于编程都有自己的"套路",好的套路都会得到复用和 IT 界的传播.这时有一个疑问,怎样来实现呢?小编这里就准备介绍如何将自己写的 Python 包上传到 Python 官网 ...

  6. python代码时钟_时钟 - python代码库 - 云代码

    [python]代码库from turtle import * from datetime import * def Skip(step): #建立表的外框 penup() forward(step) ...

  7. python代码需要背吗-20个Python代码段,你需要立刻学会,好用到哭!

    Python是一种非BS编程语言.设计简单和易读性是它广受欢迎的两大原因.正如Python的宗旨:美丽胜于丑陋,显式胜于隐式. 记住一些帮助提高编码设计的常用小诀窍是有用的.在必要时刻,这些小诀窍能够 ...

  8. 简单几段python代码_如何用python跑一段鸿蒙最简单代码?

    首先,鸿蒙并不支持python,HarmonyOS代码开发支持多语言,包括Java.XML(Extensible Markup Language).C/C++ . JS(JavaScript).CSS ...

  9. python代码示例百度云-python利用百度云接口实现车牌识别的示例

    一个小需求---实现车牌识别. 目前有两个想法 1. 调云在线的接口或者使用SDK做开发(配置环境和编译第三方库很麻烦,当然使用python可以避免这些问题) 2. 自己实现车牌识别算法(复杂) 一开 ...

最新文章

  1. 如何实现有效的团队管理?
  2. 常用的web安全处理
  3. 用FFMPEG SDK进行视频转码压缩时解决音视频不同步问题的方法(转) PTS DTS
  4. Python基础----Matplotlib_新增
  5. 热门开源后端软件Parse Server中存在严重的 RCE ,CVSS评分10分
  6. linux 配置java环境变量_linux配置java环境变量(详细)
  7. 【java批量图片压缩处理】
  8. gopher对mysql的利用_gopher协议的攻击利用
  9. 方维o2o系统多通道支付的实现
  10. 解决npm只能使用管理员权限安装
  11. 任正非、董明珠、曹德旺,中国实业三大网红!他们有个共同点:坚决不做一件事!
  12. 大一新生计算机掌握情况word,2021年大一计算机学习心得word版
  13. 微信小程序 - 引入第三方字体(使用网络字体艺术字)
  14. CPU是沙子做的,凭什么卖那么贵?
  15. Token Bucket 令牌桶算法
  16. roboware-studio在ubuntu18.04出现像素干扰点解决
  17. 光伏-储能并网系统仿真(MATLAB/SIMULINK)-part1
  18. 《财报就像一本故事书》读书笔记(未完待续)
  19. Python学习笔记 - Python语言概述和开发环境
  20. 【算法入门到进阶】【学习目录】

热门文章

  1. XScroll.js更新:加入交错切换效果,附思路
  2. 通过Image对象获取对象的格式
  3. 对 VR 项目开发流程的调研
  4. 使用Struts2防止表单重复提交
  5. Struts2中的拦截器
  6. linux 解压xz包
  7. Ext JS学习第十六天 事件机制event(一)
  8. 5、在secureCRT中vi显色
  9. Win32 基本文件读写操作
  10. python常用命令汇总-python数据分析之pandas常用命令整理