1、Python的两种模式和文件类型
1.1、两种模式:
1.1.1、交互模式:
进入交互模式:python
退出交互模式:exit();
方便调试
1.1.2、文本模式:
执行:python 1.py
1.2、Python的文件类型:
1.2.1、源代码
直接编写的python文本文件,有Python解析执行,不需要编译。
1.2.2、字节代码
编译后生成的pyc
编译方法:
import py_compile
py_compile.compile('1.py');
1.2.3、优化代码:
经过优化后的源文件, pyo
python -o -m py_compile hello.py
上面三种文件类型均可直接调用python执行
2、变量
字母,数字,下划线组成,不可以数字开头,不可以使用关键字
id(a) #查看内存区块标示
a = 123
a = 456
id(a) #得到不同的地址空间
a = 123
b = 123
id(a) #与id(b)得到相同的地址空间
3、运算符 表达式
3.1、赋值运算符
=
3.2、算法运算符
整除: 3.0//2 1.0
幂次方: 2**3 8
3.3、关系运算符
> < >= <= ==
3.4、逻辑运算符与终端输入
and or not
3.5、优先级由低到高:
优先级,由高到低
Lambda
逻辑运算: or
逻辑运算: and
逻辑运算: not
成员测试: in, not in
同一性测试: is, is not
比较:< <= > >= != ==
按位或: |
按位异或: ^
按位与: &
移位: << >>
加减法: + -
乘除取余: * / %
正负号: +x, -x
按位翻转: ~x
指数:**
3.6、终端输入
a = raw_input() #字符串
a = int(a) #转换为整数
raw_input("please input number1:") #终端提示
4、数据类型 数字 字符串
python不需要声明,由存储的数据决定
数据类型:数字,字符串,列表,元组,字典
4.1、数字类型:
4.1.1、整型
type(123) #查看类型 <type 'int'>
4.1.2、长整型
type(123456789123456) #<type 'long'>
为了区分整型和长整型,长整型加个l: a = 12L
4.1.3、浮点
0.0 12.0 -18.0 3e+7
4.1.4、复数
c=3.14j #<type 'complex'>
4.2、字符串
a = 'test'
b = "test\nabc"
c = """test""" #保存格式化输入 或者作为注释
d = """test
abc"""
字符串 列表 元组 都被称作序列类型的数据
4.2.1、切片和索引:
a='asfasdfasf'
print a[2] #f
print a[2] + a[1] #fs
print a[1:4] #sfa
print a[:4] #asfa
print a[1:] #sfasdfasf
print a[::2] #afsfs 2为步长
print a[-4:-1] #fas
print a[-2:-4:-1] #sa
4.3、序列
列表,元组和字符串都是序列
序列的两个主要特点是索引操作符和切片操作符:
- 索引操作符:从序列中抓取一个特定项目
- 切片操作符:获取一个切片,即一部分序列
str="abcd"
print str[1] #b
print str[1:4] #bcd
print str[-1] #d
print str[:] #abcd
print str[::] #abcd
4.3.1、序列的基本操作:
操作
例子
len()
len('abcd') #4
'a' + 'b'
'a' * 3 #aaa
in
'c' in 'abcd' #True
max()
max('abcd') #d
min()
min('abcd') #a
cmp(tuple1, tuple2)
cmp('abc', '123') #outpu:1 大于
4.4、元组()
元组和列表十分类似,元组的值和字符串一样不可修改
元组通过圆括号用都好分割的项目定义
t=("Jason", 20, "male")
t[0] Jason
元组通常用在使语句或用户定义的函数能够安全的采用一组值的时候
#空元组
a=()
#单一元组
a=(20,)
4.4.1、元组的操作:
和字符串类型一样,可以通过索引和切片操作,元组的值不可改变
t=("Jason", 20, "male")
t[1] = 30 #TypeError:'tuple' oblect does not support item assignment
#拆分元组
name, age, gender = t;
name Jason
#扩展:
a,b,c = 1,2,3
4.5、列表
元组不可变,存储可变的数值,可以使用列表
列表是可变类型的数据
列表的组成:用户[]表示列表,半酣了多个以逗号分隔开的数字,或字符串
listmilo = []
listmilo = ['arthinking', 'Jason', 1]
listmilo[0] #output: arthinking
listmilo[0:2] #output: [arthinking, Jason]
l2 = ['abc'] # 不用逗号
4.5.1、列表操作:
取值:
- 切片和索引
- list[]
添加:
- list.append()
删除:
- del(list[i])
- del(list)
- list.remove(1) # 删除第一个出现的元素
- list.remove(list[i])
元素重新赋值后,内存空间地址不变
修改
- list[i] = x
查找
- var in list
Tips:
help(list.append) #方法的帮助信息
4.6、字典
t1=["a", "b"]
t2=["1", "2"]
print zip(t1, t2) #[('a', '1'), ('b', '2')]
字典是python中唯一的映射类型(哈希表)
字典对象是可变,但是字典的键必须使用不可变对象,并且一个字典中可以使用不同类型的键值
keys()或者values()返回键列表或者值列表
items()返回包含键值对的元组
4.6.1、创建字典:
a = {'a':1, 'b':2}
c ='cc'
b = {'a':1, 'b':2, c:3, 1:4}
使用工厂方法dict():
dict(a=1, b=2)
内建方法:fromkeys(),字典中的元素具有相同的值,默认为None
print {}.fromkeys(('x', 'y'), -1) #output: {'x': -1, 'y': -1}
4.6.2、访问字典中的值:
直接使用key访问:key不存在会报错,可使用had_key()或者in和not in判断,但是has_key()方法即将废弃
循环遍历:
for key in dict1.keys()
使用迭代器:
for key in dict1
4.6.3、更新和删除:
直接用键值访问更新
del dict1['a'] #删除键为a的元组
dict1.pop('a') #删除并且返回键为a的元素
dict1.clear() #删除字段所有元素
del dict1 #删除整个字典
字典相关的内建函数:
type(), str(), (cmp很少用于字典的比较,比较依次是字典的大小,键,值)
工厂函数dict();
dict(zip('x','y')) #或者dict(x=1,y=2)
使用字典生成字典比用copy慢,这种情况下推荐使用copy()
5、流程控制
if 1
格式遵循代码块缩进原则
true:表示非空的量(string, tuple, list, set, dictonary等),所有非零数
false:表示0,None,空的量等
if x
6、for循环
for iterating_var in sequence:
statements(s)
格式遵循代码块缩进原则
for x in [0,1,2,3,4,5,6]:
print x, "testabc"
range(i,j[,步进值])
如果所创建的对象为整数,可以用range
i为初始值,默认为0
j为终止值,但不包括在内,步值默认为1
for x in range(100):
7、遍历
for x in "hello":
print x
# 迭代索引
for index in range(len(list)):
print list[index]
7.1、遍历字典:
a = {'a':1,'b':2}
for x in a:
print a[x] #输出key
7.2、元组拆分的方式遍历:
for k,v in a.items():
print k,v
8、循环控制
for k,v in a.items():
print k,v
else:
print "end" # 正常执行完for之后会执行
import time
for x in range(20):
print x
#time.sleep(1)
if x == 3:
pass #代码中起到占位的作用
if x == 4:
continue
if x == 5:
exit() #退出程序
if x>=6:
break
else:
print "end" #break之后就不会执行这句了