Python程序员都知道的入门知识の一
目录:
1. 变量
2. 字符串
3. 数据类型
4. 猜字游戏练习
------
5. Python Web框架
6. Flask框架のPocoo编码风格
目录【Python程序员都知道的入门知识】
Paste_Image.png1. 变量
Java中变量的概念是把一个值赋值给定义过变量类型的一个名字,那么与这个变量名绑定的这个值相应的就被存储进内存中,与这种将值存入变量名字中的概念相不同的是,Python更像是把名字贴到这个值上面。
使用时的<a>注意事项</a>:
- 使用变量前,要先给他赋值。
- 变量名可包含数字、字母、下划线,不能以数字开头。
- Python是大小写敏感的,所以Cat和cat是两个不同的名字。
2. 字符串
字符串由单引号或双引号标识都可以。
字符串中含有引号,用转义字符 \ 标识。如下
str='Let\'s play basketball now !'
但是遇到像下面这条链接串,整个字符串本来就有很多反斜杠的怎么办呢?
http://www.jianshu.com/writer#/notebooks/8503426/notes/7804294/preview
2.1. 原始字符串
原始字符串即在字符串的引号前面加上字母<a> r </a>即可。
str=r"http://www.jianshu.com/writer#/notebooks/8503426/notes/7804294/preview"
案例说明:
Paste_Image.png2.2. 长字符串
用 <a>'''</a> 三重引号实现
Paste_Image.png<a>注意</a>
str()是Python 的内置函数,不要将内置函数名作为自己的变量名,会出现潜在的bug.
3. 数据类型
整数、浮点数、字符串、布尔类型、数字、列表、元组、字典、日期 。共9种
数据类型涉及内容比较多,将独立一篇来学。
4. 猜字游戏练习
需求:
- 随即生成一个0到10之间的数字,让用户输入数字,将这个数字与随机数字比较,相同则输出“猜对了!”。不同则输出“猜错了!”
- 猜的数字大了则提示“我的数字比你猜的小”,小了则提示“我的数字比你猜的大”。
- 有三次输入机会,三次用完提示“抱歉,您只有三次机会!”,结束游戏。
- 游戏结束后停顿十秒给玩家看提示语。
5. Python Web框架
有人说学习一门编程语言,主要学框架。相较于Ruby单一的web框架Rails,Python的框架,无论是Micro-framework还是framework都层出不穷,因此小喵特地记录了一些PythonWeb的框架:
- Django
- Web2py
- CubicWeb
- Zope2
- TurboGears
- Pylons
- Grok
- Web.py轻量级
- Tornado轻量级
- Pyramid轻量级
- CherryPy轻量级
- Flask 轻量级
-
Bottle 轻量级
关于部分框架的简要说明,可参考10个用于web开发的最好Python框架
上述列表中标出了一些轻量级的web框架,那么问题来了,轻量级框架和重量级框架的区别是什么?
- 重量级框架启动往往需要加载更多的资源
- 轻量级框架一般是一组独立的特性实现集,而重量级的框架往往需要依赖其他支撑。
- 重量级框架需要继承和实现框架的接口和抽象类来注册和实例化组件,轻量级框架则不一定。
简单点说,轻量级和重量级通常是以启动程序需要的资源来决定的。注意不要以耦合度来作为区别的标准。
上述区别是不是让你产生 “轻量级更好” 的想法呢?然而不是的。查阅资料后发现,二者本质上区别在于解决问题的侧重点的差异。
轻量级框架侧重于减小开发的复杂度,相应的它的处理能力便有所减弱(如事务功能弱、不具备分布式处理能力),比较适用于开发中小型企业应用。 重量级框架则强调高可伸缩性,适合与开发大型企业应用。
6. Flask框架のPocoo编码风格
(Pocoo是Flask的开发团队)
6.1. 总体布局
- 缩进:四个空格
- 最大行长79字符(默认为84个字符)
- 可续的长语句
反斜线 \ 来继续语句,下一行要对齐到最后一个点或等号或缩进四个空格;带括号的就对齐到括号。多元素的元组或列表,则在起始括号后立即换行。
- 空行:顶层函数和类用两个空行分隔,其他一行即可。
6.2. 表达式和语句
- 一元运算符不使用空格,圆括号也是,二元要用空格分隔
(所谓二元运算,即由两个元素形成第三个元素的一种规则) - 不用变量与常量做比较,而是把常量与变量做比较
- 比较
跟任意类型:==
和!=
跟单例,使用is
和is not
不要与 True 或 False 做比较 - 否定包含检查
使用foo not in bar
而不是not foo in bar
- 实例检查:
用isinstance(a, C)
而不是type(A) is C
,通常要避免实例检查,应对特性检查。
6.3. 命名约定
- 类名:
CameCase
,缩写词要大写(HTTPWriter
) - 变量名、方法和函数名:小写,单词间用下划线隔开
lowercase_with_underscores
- 常量:大写,单词间用下划线隔开
UPPERCASE_WITH_UNDERSCORES
- 预编译正则表达式:
name_re
函数和方法的参数:
- 类的方法:
cls
作为第一个参数 - 实例方法:
self
作为第一个参数 - 属性的lambda表达式应该把第一个参数替换为
x
,如:display_name = property(lambda x: x.real_name or x.username)
6.4. 文档注释
单行:闭合三引号和开头三引号在同一行。
多行:开头三引号与文本在同一行,闭合另起一行。
模块标头:包含utf-8编码声明和标准的文档注释。
6.5. 注释
同文档注释,但当用于注释一个属性时,用井号加冒号 #:
进行注释