Python学习笔记三:基础语法
Python编程中理解对象的概念很重要,因为其宗旨是'一切皆对象'。(提前预告)
高级语言Python,Perl和Java等语言有许多相似之处。但是,也存在一些差异。
交互式编程:
脚本式编程
Python IDE 编写.py
Python 标识符
区分大小写
以_开头的标识符有特殊意义
以单_开头(_foo)的代表不能直接访问的类属性,需要提供类提供的接口进行访问,不能用from xxx import **而导入。
以双下划线开头(__foo)代表私有成员
以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如__init__()代表类的构造函数
Python保留字符
不能做任何其他标识符名称、常数或变量
and | exec | not |
assert | finally | or |
break | for | pass |
class | from | |
continue | global | raise |
def | if | return |
del | import | try |
elif | in | while |
else | is | with |
except | lambda | yield |
行和缩进
Python有严格的行缩进要求,用缩进来写模块。所有的代码块必须包含相同的缩进空白数量。
if True:
print "True"
else:
print "False" #错误的
python 语句以新行作为语句的结束符。用斜杠(\)连接一行语句多行显示。
语句包含[],{},()就不需要使用多行连接符。
days=['Mon','Tue','Wed',
'Thu','Fri']
注释
#!/usr/bin/python
空行
函数或类的方法之间用空行分隔表示一段新的代码开始。类和函数入口也用以空行分隔,以突出函数入口的开始。
并不是python语言的一部分。
同一行显示多条语句 import sys; x='foo'
一、数据类型:
Python能够直接处理以下数据,不需要提前声明。
整数,Python可以处理任意大小的整数。
浮点数,也就是小数,对于很大或很小的浮点数就必须用科学计数法表示,1.23e9 ,1.2e-5
字符串,"",'' 'I\'m \"OK\"!' 转义字符\n \t \\
print '''line1
line2
line3'''
布尔值,True False, 3>2 3>5, and or not
空值,None,一种特殊的空值
标准数据类型
Numbers(数字)
数字数据类型用于存储数值。
他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。
当你指定一个值时,Number对象就会被创建:
int long float complex
del 删除对象
长整型51924361L ,a+bj--complex(a,b)
String(字符串)
python的字串列表有2种取值顺序:
- 从左到右索引默认0开始的,最大范围是字符串长度少1
- 从右到左索引默认-1开始的,最大范围是字符串开头
如果你的实要取得一段子串的话,可以用到变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
#coding=utf-8
#!/usr/bin/python
str = 'Hello World!'
print str # 输出完整字符串
print str[0] # 输出字符串中的第一个字符
print str[2:5] # 输出字符串中第三个至第五个之间的字符串
print str[2:] # 输出从第三个字符开始的字符串
print str * 2 # 输出字符串两次
print str + "TEST" # 输出连接的字符串
>
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST
List[列表]
[]
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。
列表用[ ]标识。是python最通用的复合数据类型。看这段代码就明白。
列表中的值得分割也可以用到变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认0开始的,从右到左索引默认-1开始,下标可以为空表示取到头或尾。
加号(+)是列表连接运算符,星号(*)是重复操作
1 #coding=utf-8 2 #!/usr/bin/python 3 4 list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] 5 tinylist = [123, 'john'] 6 7 print list # 输出完整列表 8 print list[0] # 输出列表的第一个元素 9 print list[1:3] # 输出第二个至第三个的元素 10 print list[2:] # 输出从第三个开始至列表末尾的所有元素 11 print tinylist * 2 # 输出列表两次 12 print list + tinylist # 打印组合的列表
输出:
1 ['abcd', 786, 2.23, 'john', 70.2] 2 abcd 3 [786, 2.23] 4 [2.23, 'john', 70.2] 5 [123, 'john', 123, 'john'] 6 ['abcd', 786, 2.23, 'john', 70.2, 123, 'john']
Tuple(元组)
内部元素用逗号隔开。但是元素不能二次赋值,相当于只读列表。
元组是不允许更新的。而列表是允许更新的
1 #coding=utf-8 2 #!/usr/bin/python 3 4 tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 ) 5 tinytuple = (123, 'john') 6 7 print tuple # 输出完整元组 8 print tuple[0] # 输出元组的第一个元素 9 print tuple[1:3] # 输出第二个至第三个的元素 10 print tuple[2:] # 输出从第三个开始至列表末尾的所有元素 11 print tinytuple * 2 # 输出元组两次 12 print tuple + tinytuple # 打印组合的元组
>
('abcd', 786, 2.23, 'john', 70.2) abcd (786, 2.23) (2.23, 'john', 70.2) (123, 'john', 123, 'john') ('abcd', 786, 2.23, 'john', 70.2, 123, 'john')
Dictionary{字典}
字典(dictionary)是除列表意外python之中最灵活的内置数
结构类型。列表是有序的对象结合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
1 #coding=utf-8 2 #!/usr/bin/python 3 4 dict = {} 5 dict['one'] = "This is one" 6 dict[2] = "This is two" 7 8 tinydict = {'name': 'john','code':6734, 'dept': 'sales'} 9 10 11 print dict['one'] # 输出键为'one' 的值 12 print dict[2] # 输出键为 2 的值 13 print tinydict # 输出完整的字典 14 print tinydict.keys() # 输出所有键 15 print tinydict.values() # 输出所有值
>
This is one This is two {'dept': 'sales', 'code': 6734, 'name': 'john'} ['dept', 'code', 'name'] ['sales', 6734, 'john']
数据类型转换
函数 | 描述 |
---|---|
int(x [,base]) |
将x转换为一个整数 |
long(x [,base] ) |
将x转换为一个长整数 |
float(x) |
将x转换到一个浮点数 |
complex(real [,imag]) |
创建一个复数 |
str(x) |
将对象 x 转换为字符串 |
repr(x) |
将对象 x 转换为表达式字符串 |
eval(str) |
用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) |
将序列 s 转换为一个元组 |
list(s) |
将序列 s 转换为一个列表 |
set(s) |
转换为可变集合 |
dict(d) |
创建一个字典。d 必须是一个序列 (key,value)元组。 |
frozenset(s) |
转换为不可变集合 |
chr(x) |
将一个整数转换为一个字符 |
unichr(x) |
将一个整数转换为Unicode字符 |
ord(x) |
将一个字符转换为它的整数值 |
hex(x) |
将一个整数转换为一个十六进制字符串 |
oct(x) |
将一个整数转换为一个八进制字符串 |
二、变量
变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。
基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。
因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。
赋值 =
多变量赋值 a, b, c = 1, 2, "john"
三、常量
通常用全部大写的变量名表示常量。PI
10/3 10.0/3 10%3
四、运算符
Python算术运算符
以下假设变量a为10,变量b为20:
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | a + b 输出结果 30 |
- | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 200 |
/ | 除 - x除以y | b / a 输出结果 2 |
% | 取模 - 返回除法的余数 | b % a 输出结果 0 |
** | 幂 - 返回x的y次幂 | a**b 为10的20次方, 输出结果 100000000000000000000 |
// | 取整除 - 返回商的整数部分 | 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
Python比较运算符
以下假设变量a为10,变量b为20:
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 true. |
<> | 不等于 - 比较两个对象是否不相等 | (a <> b) 返回 true。这个运算符类似 != 。 |
> | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
< | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 | (a < b) 返回 true。 |
>= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
<= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 true。 |
Python赋值运算符
以下假设变量a为10,变量b为20:
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 |
c //= a 等效于 c = c // a |
Python位运算符
按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| | 按位或运算符 | (a | b) 输出结果 61 ,二进制解释: 0011 1101 |
^ | 按位异或运算符 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
~ | 按位取反运算符 | (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。 |
<< | 左移动运算符 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 右移动运算符 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
Python逻辑运算符
Python语言支持逻辑运算符,以下假设变量a为10,变量b为20:
运算符 | 描述 | 实例 |
---|---|---|
and | 布尔"与" - 如果x为False,x and y返回False,否则它返回y的计算值。 | (a and b) 返回 true。 |
or | 布尔"或" - 如果x是True,它返回True,否则它返回y的计算值。 | (a or b) 返回 true。 |
not | 布尔"非" - 如果x为True,返回False。如果x为False,它返回True。 | not(a and b) 返回 false。 |
Python身份运算符
身份运算符用于比较两个对象的存储单元
运算符 | 描述 | 实例 |
---|---|---|
is | is是判断两个标识符是不是引用自一个对象 | x is y, 如果 id(x) 等于 id(y) , is 返回结果 1 |
is not | is not是判断两个标识符是不是引用自不同对象 | x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 1 |
Python运算符优先级
以下表格列出了从最高到最低优先级的所有运算符:
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 'AND' |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not or and | 逻辑运算符 |