格式
注释用 #
开头表示。
语法采用缩进的方式,虽然没有规定是几个空格,但是一般都是 4 个。
大小写敏感。
通常我们在开头这么写:
1 | #!/usr/bin/env python |
第一行注释是为了告诉 Linux/OS X 系统,这是一个 Python 可执行程序, Windows 系统会忽略这个注释。
由于 Python 源文件也是文本文件,当我们的代码中含有中文的时候(包括注释),第二行注释告诉 Py 解释器,读取源码的时候用指定编码读取。
数据类型和变量
整数
可以处理任意大小的整数。
但是,
int
类型的有最大值 (在我的电脑上是)
1 | import sys |
浮点数
没什么特别的。
字符串
以 ‘’ 或 “” 括起来的任意文本。
布尔值
True
和 False
,可以用 or
、and
、not
进行运算。 (和一般语言一样的)
空值
None
代表空值,不是 0 ,因为 0 是有意义的。
变量
没什么特别的。
常量
没什么特别的。
字符串和编码
转换
py 比 Unicode 标准发布还早,所以一开始,字母在 py 中是用 ASCII 编码的,提供了 ord()
和 chr()
两个转换的函数
1 | 'A') ord( |
后来又增加了对 Unicode 的支持
1 | print u'\u4f60\u597d' |
当然,字母也是可以使用这个方式转换,不多说。
格式化
与 C 一样,用 % 实现的。
1 | 'Hello %s' % 'Zhanglf' |
整数 d ,浮点数 f ,字符串 s ,十六进制整数 x 。
多个一起格式化的时候,
1 | 'Hello %s,%d' % ('Zhanglf',886) |
括号起来,逗号隔开。
循环和判断
循环
有两种循环,一种是 while
循环
很简单,注意缩进和冒号
1 | n = 0 |
py 不支持 ++ 运算符? 我试了不行。
还有一种是 for in
1 | listttt = ['lll','iii','sss','ttt']; |
像是 Java 中的增强 for
循环。
另外有一个 range()
函数,可以生成一个整数序列:
1 | 6) range( |
判断
逻辑和一般语言都一样。
条件判断,多重判断的时候,用 elif
而不是 else if
,注意缩进和冒号。
1 | age = 20 |
list 和 tuple
list
中括号表示。
list 和 Java 的集合没差,有序,可重复,可变。但是它可以存不同类型的元素,(其实 Java 的集合也行)甚至是别的 list。
1 | 33,44,'zlf'] listtt = [ |
获取长度 len()
添加元素到末尾 append()
添加元素到指定位置 insert(索引,元素)
删除末尾元素 pop()
删除指定位置的元素 pop(索引)
替换元素,直接通过索引赋值
最后,如果,list 里面嵌套了 list,就变成多维集合了。
tuple
小括号表示。
元组: 有序,不可变。安全。
tuple 不可变。但是如果里面有元素是 list,那么其中的 list 是可以改变的。
有一个要注意的地方,
1 | 1) tupleee = ( |
因为(1) 中的括号就是普通的数学括号,所以 py 官方规定如果是那种情况要初始化,记得加个逗号。
dict 和 set
dict
花(大)括号表示。
dict 就是 iOS 中常说的字典,全称 dictionary ,Java 中的 Map,是以键值对存储的。
1 | #!/usr/bin/env python |
不能通过 value 找 key,因为 dict 是无序不重复的,也就是说 key 值是唯一的,所以
1 | dicttt = {"zlf":24,"hei":23,"ha":24,"ha":24,"zlf":24,"hei":23,"ha":24,"ha":24} |
输出的也是
{'zlf': 24, 'ha': 24, 'hei': 23}
与 Map 一样,查找 value 用的是 Hash 算法,时间复杂度是常数,典型的用空间换时间。
set
比较特殊的单列集合,和 Java 的 Set 一样,无序,不可重复。
初始化有一点特殊:
1 | 's','e','t']) settt = set([ |
其中的中括号并不是代表存入的是 list ! 添加相同的元素会被自动过滤。
和 dict 一样不可存入变量当做是 key,因为为了保证 key 值是唯一的,而变量可能导致多个 key 值相同。