To be pythonic

第一章 引言

  •  C ? X: Y ===> X if C else Y
  • 将常量集中到一个文件中
  • 函数
(1)调用者在上,被调用者在下
(2)尽量短小,嵌套层次不宜过深
(3)一个函数只做一件事,保证函数语句力度的一致性
  • 代码过长
超过的部分用圆括号、方括号和花括号进行连接,并保持行链接的元素垂直对齐
  •  关于注释
(1)  注释是用来解释代码功能、原因及想法的而不是代码本身
(2)  给外部可访问的函数和方法添加文档注释,说明功能,参数,返回值及可能发生的异常值。外部调用人员查看docstring
(3)  删除而不是注释掉无用的代码,利用git找回被删除的代码
  • 空格的使用
(1)函数定义或类定义之间空两行,类定义与第一个方法之间、或者需要进行语意分割的地方空一行
(2)需要空格:赋值、比较、布尔运算 (=,==,>,<,!=,in,not in,is,is not,and, or, not)、强调前面的操作符
(3)不需要空格:逗号和分号前、函数名与左括号间、序列操作时序列名和[]之间、函数的默认参数两侧

第二章 编程惯用法

  • 枚举的几种替代方式
(1)类属性(支持无意义的操作)
(2)函数
(3) collections.namedtuple(允许枚举值重复)
(4)可以使用第三方模块flufl.enum
  • 浮点数
(1)涉及除法操作时先尽量将操作数转换为浮点类型再做运算
(2)浮点数只能接近不能精确表示,避免i==1.35这种表达式,或者 指定精度
  • 索引和值
(1)使用enumerate(seq)获取序列迭代的索引和值,seq可以时list、set、可迭代对象
(2)对于字典还是使用iteritems
  • 判断两个对象相等应该使用==而不是is
  • 考虑兼容性尽可能使用Unicode
(1)有中文的程序则在头文件制定编码方式

# coding=utf8

# !/usr/bin/python
# -*-coding: utf8 -*-

(2)对于中文字符,为了做到不同系统之间的兼容,建议直接使用Unicode表示方式
(3)利用unicode_literals自动将定义的普通字符识别为Unicode字符串
from __future__ import <span style="font-family: Arial, Helvetica, sans-serif;">unicode_literals</span>

In [5]: s = "中文字符"

In [6]: s
Out[6]: u'\u4e2d\u6587\u5b57\u7b26'

s += "Chinese character"

In [8]: s
Out[8]: u'\u4e2d\u6587\u5b57\u7b26Chinese character'

  • 构建合理的包层次来管理module
1. 包(就是目录)的构成:python文件(就是模块)+__init__.py,通过包名.模块名进行访问
2. __init__.py的作用:
(1)区分包和普通目录;
(2)在该文件中申明模块级别的import语句从而使其变成包级别可见.
比如有如下关系的包结构:
Package/ __init__.py
        Module1.py
        Module2.py
        Subpackage/ __init__.py
                 Module1.py
#Module1.py
class Apple:
        
        def __init__(self, id):
                self.id = id

如果要使用Apple类,当__init__.py文件为空时,要使用完整路径申明import语句:
from Package.Module1 import Apple
但是可以通过在__init__.py文件中添加语句,则可以直接通过Package导入类Apple:
#<span style="font-family: Arial, Helvetica, sans-serif;">__init__.py</span>

from Module1 import Apple
#直接通过Package导入类Apple
from Package import Apple
(3)通过在__init__.py中定义__all__变量,控制需要导入的子包或者模块
#__init__.py
__all__ = ['Module1', 'Module2', 'Subpackage']

再运行 from Package import *, 可以看到__all__变量中定义的模块和包被导入到当前名字空间。


3.使用包带来的便利:
(1)将关系密切的模块组成一个包,完善项目结构,增强代码可维护性和实用性;
(2)在嵌套的包结构中,每一个模块都以其所在的完整路径作为其前缀,因此即使名称一样,不同包下的模块也不会冲突
import Package.Module2
import Package.Subpackage.Module2





第四章 库

4.1 按需选择sort()或者sorted()

1. sort()作用于列表,直接修改原有列表,消耗内存少,效率高
2. sorted作用于可迭代对象,返回一个新的对象
3.利用sorted对不同数据结构进行排序
  • 对字典进行排序
from operator import itemgetter

phonebook = {'Emma': '9786', 'Sharon': '1871', 'Atina': '1094'}

sorted_pb = sorted(phonebook.iteritems(), key=itemgetter(1))

print sorted_pb
[('Atina', '1094'), ('Sharon', '1871'), ('Emma', '9786')]

  • 多维list排序
In [6]: result = [['Bob', 95.0, 'A'], ['Amy', 96.0, 'A'], ['Tom', 86.0, 'C'], ['Nann', 86.0, 'E']]

In [7]: sorted(result, key=itemgetter(1,2)) 
Out[7]: 
[['Tom', 86.0, 'C'],
 ['Nann', 86.0, 'E'],
 ['Bob', 95.0, 'A'],
 ['Amy', 96.0, 'A']]

In [8]: sorted(result, key=itemgetter(1,2), reverse=True)
Out[8]: 
[['Amy', 96.0, 'A'],
 ['Bob', 95.0, 'A'],
 ['Nann', 86.0, 'E'],
 ['Tom', 86.0, 'C']]

  • 字典的value是list排序
In [9]: mydict = {'Li':['M',7],'Zhang':['E',2],'Wang':['P',2],'Ma':['C',9],'Du':['C',2]}

In [10]: sorted(mydict.iteritems(), key=lambda (k,v): itemgetter(1)(v))
Out[10]: 
[('Du', ['C', 2]),
 ('Zhang', ['E', 2]),
 ('Wang', ['P', 2]),
 ('Li', ['M', 7]),
 ('Ma', ['C', 9])]



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
08-10
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值