Python语法笔记1
本文由发表于4年前 | Python | 暂无评论 |  被围观 2,076 views+
1、Python的两种模式和文件类型1.1、两种模式:1.1.1、交互模式:1.1.2、文本模式:1.2、Python的文件类型:1.2.1、源代码1.2.2、字节代码1.2.3、优化代码:2、变量3、运算符 表达式3.1、赋值运算符3.2、算法运算符3.3、关系运算符3.4、逻辑运算符与终端输入3.5、优先级由低到高:3.6、终端输入4、数据类型 数字 字符串4.1、数字类型:4.1.1、整型4.1.2、长整型4.1.3、浮点4.1.4、复数4.2、字符串4.2.1、切片和索引:4.3、序列4.3.1、序列的基本操作:4.4、元组()4.4.1、元组的操作:4.5、列表4.5.1、列表操作:4.6、字典4.6.1、创建字典:4.6.2、访问字典中的值:4.6.3、更新和删除:5、流程控制6、for循环7、遍历7.1、遍历字典:7.2、元组拆分的方式遍历:8、循环控制
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之后就不会执行这句了
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/python-yu-fa-qian-xi-bi-ji.html
关键字: ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2014 3/9
文章评论
    没有评论
给我留言

有人回复时邮件通知我
Python的相关文章
随机文章 本月热门 热评
1 关于学习新技术的方法和让自己不断进步的一点建议 2011/5/27
2 Java Web笔记 – Cookie的使用 2011/11/12
3 汇编中的大小写字母转换的方法 2011/4/16
4 Java基础笔记 – 通过反射机制动态获取属性的值模拟Struts的自动赋值 2011/10/7
5 Tips:ItzDesktop使用技巧 2012/6/10
6 Hibernate Generic DAO的介绍安装和使用 2011/12/27
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.