python 解释风格、python 变量和数据类型、python 基本运算、python 模块
Python 解释风格
注释
1
# this is annotation
缩进
1
2
3
4
5
6if i > 0:
x = 1 # 有4个空格的缩进
elif i == 0:
x = 2
else i < 0:
x = 3续行
- 续行符\
1
2
3if i > 0 and\
j < 0:
x = 1- 无需续行符
括号内部、三引号内部’’’无需续行符直接换行
Python 变量和数据类型
动态的强类型语言
1
2
3
4
5
6
7
8# python是动态强类型语言,变量无需声明,自动确定数据类型
>>>pi = 3.1415926
>>>PI = 'apple pie'
>>>print (type(pi))
>>>print (type(PI))
<type 'float'>
<type 'str'>基本数据类型
整型(integer)
浮点型(float)
布尔型(boolean)True,False
复数型(complex)
1
2+3j #虚数部分必须加j
序列(sequence)
字符串(string)—不可变类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19>>>str = 'this is a string'
>>>str = "this is also a string"
>>>str = ''' this is a string, too'''
# 当要输出含双引号的字符串时,可用单引号包裹,反之亦然
'a "blue" apple' astr =
print(astr)
a "blue" apple
"a 'black' orange" bstr =
print(bstr)
a 'black' orange
# 三引号内可以实现方便的换行,不需要转义符
'''Who is he? cstr =
James Bond'''
print(cstr)
Who is he?
James Bond列表(list)—可变类型
1
2
3
4
5
6>>>list = [123, 'sun', True]
>>>print (type(list))
<type 'list'>
>>>''.join(list) # 列表转字符串元组(tuple)—不可变类型
1
2
3
4>>>tuple = (213, 'sun', True)
>>>print (type(tuple))
<type 'tuple'>引用方式 [下限:上限:步长]
1
2
3
4
5
6
7
8
9
10
11
12
13# 列表下标从 0 开始
>>>print (list[0])
123
# 若写明上限,则上限不包括在内
>>>s1[:5] # 从开始到下标4 (下标5的元素不包括在内)
>>>s1[2:] # 从下标2到最后
>>>s1[0:5:2] # 从下标0到下标4 (5不包括在内),每隔2取一个元素
>>>s1[::-1] # 倒序 相当于s1[-1:-len(s1)-1:-1](缺省默认填值)
# 尾部元素引用
>>>s1[-1] # 序列最后一个元素
>>>s1[-3] # 序列倒数第三个元素重复 sequence*copies
1
2
3
4
5>>>'apple'*3
'appleappleapple'
>>>[0]*3
'[0,0,0]'拼接 sequence+sequence
1
2
3
4
5
6
7
8>>>print('pine'+'apple')
'pineapple'
>>>print([1,2,3]+[4,5,6])
[1, 2, 3, 4, 5, 6]
>>>print((1,2,3)+(4,5,6))
(1, 2, 3, 4, 5, 6)判断成员 in,not in
1
2
3>>>namelist = ['Jack','Russell','Mary']
>>>'Russell' in namelist
True排序sorted,倒序reversed
1
2
3
4
5
6
7
8
9
10
11>>>a = [3,6,1,9]
>>>print(sorted(a))
[1, 3, 6, 9]
>>>print(a)
[3, 6, 1, 9] # sorted()函数不改变原对象
>>>a.sort()
>>>print(a)
[1, 3, 6, 9] # .sort()方法对原对象进行改动
# reversed()和.reverse()同理
字典(dictionary)
字典和序列一样,是可以储存多个元素的类(称为容器),不同的是字典包含映射关系:字典的元素有两部分——“键”和“值”;且字典没有顺序。
1
2
3
4
5
6
7dic = {'name':'orange', 'shape':'sphere', 'price':2.6}
print (dic['price']) # 字典通过“键”引用
dic['color'] = 'orange' # 可在字典中加入新的元素
for key in dic: # 在循环中,也是通过“键”引用值
print (dic[key])创建字典的方法
1
2
3
4
5
6
7
8
9# dict()函数
dict([('Ola',23),('Kary','24'),('Mike','22')])
dict([['Ola',23],['Kary','24'],['Mike','22']])
dict((('Ola',23),('Kary','24'),('Mike','22')))
dict(Ola = 23), Kary = 24, Mike = 22)
dict(zip(name,age))
# fromkeys(seq,value) 批量赋值
a = {}.fromkeys(('Ola','Kary','Mike'),23)字典的常见用法
1
2
3
4
5
6dic.keys() # 返回dic所有的键
dic.values() # 返回dic所有的值
dic.items() # 返回dic所有的元素(键值对)
dic.clear() # 清空dic
del dic['xxx'] # 删除dic中的‘xxx’元素
dic.update(newdic) # 添加新的字典键值对集合(set)
集合是一个无序的容器,用{ }表示,且其中不包含重复的元素。
1
2
3
4
5
6
7
8
9
10
11
12a={"Tom.py", "Mike.py","Anne.py","Denny.py","Jack.py","Fan.py"}
b={"Tom.py", "Lily.py", "Anne.py", "Richard.py","Jack.py"}
print('(2)',a&b) # & 交集
print('(4)',a|b) # | 并集
print('(1)',a-b) # - 补集,a-b为差集
print('(3)',a^b) # ^ 对称差集
{'Tom.py', 'Anne.py', 'Jack.py'}
{'Tom.py', 'Denny.py', 'Lily.py', 'Fan.py', 'Anne.py', 'Mike.py',
'Richard.py', 'Jack.py'}
{'Fan.py', 'Denny.py', 'Mike.py'}
{'Denny.py', 'Mike.py', 'Lily.py', 'Fan.py', 'Richard.py'}集合的常见方法
1
2
3set.add() # 添加元素
set.remove() # 删除元素
x in set # 判断x是否在集合中
赋值
1
2
3
4
5>>>a = 10 # 普通赋值
>>>a /= 5 # 增量赋值 a = a/5
>>>b = a = a + 1 # 链式赋值 a = a+1 , b = a
>>>a,b = 10,'orange' # 多重赋值 a = 10 , b = 'orange'
>>>a,b,c = [1,2,3] # 解包python中,数值、字符串、元祖等是值类型的对象,本身不可变;列表、字典是引用类型的对象,可变。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17# 值类型对象是不可变的,对值类型变量的修改是使变量指向了一个新的对象
>>>a = 10
>>>print id(a)
33521053L
>>>a = 20
>>>print id(a)
27629312L
# 引用类型对象是可变的,对引用类型的修改则是修改的对象本身
>>>l = [1,2,3]
>>>print id(l)
39774280L
>>>l[0] = 0
>>>print id(l)
39774280L
Python 基本运算
优先级:算术运算>位运算>关系运算>逻辑运算
算术运算
按优先级:
** (乘方)
+,-(正负)
*(乘), //(整除), /(除), %(取余)
+,-(加减)
位运算(二进制运算)
1
2
3
4
5
6
7
8
9
10
11
12>>>~1 # 取反
-2
16 << 2 # 左移
64
16 >> 2 # 右移
4
64 & 15 # 与
0
64 | 15 # 或
79
64 ^ 14 # 异或
78关系运算
!=(不等于)
逻辑运算
优先级:not > and > or
Python 模块
单个模块
一个.py文件就是一个模块,用 import 函数导入模块,可以使用其中的函数、类等
1
2
3
4import math # 导入模块 math
# 使用“模块.对象”格式调用模块中的对象 math.pi
3.141592653589793还有其它导入模块的方式:
1
2
3
4
5import a as b # 导入a,重命名为b
from a import func1 # 从模块a中引入func1对象,调用时直接使用func1,不用再写a.function1
from a import * # 从模块a中引入所有对象,调用时直接使用对象,不用再写 a.对象模块包
将功能相似的模块放在同一个文件夹,构成一个模块包
1
import AFolder.module # 导入AFolder文件夹中的模块
该文件夹中必须包含一个__init__.py的文件,提醒Python,该文件夹为一个模块包。__init__.py可以是一个空文件。
参考
延伸