python的库,方法这么多,写程序的时候能记住吗
展开全部
这就是平时的工作方式。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支持等存在缺陷。所以尽管我很喜欢这个框架的思路,但以后不会再用了。
常见的项目所常用的函数很难超过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支持等存在缺陷。所以尽管我很喜欢这个框架的思路,但以后不会再用了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询