一、语句
1.if语句
标准的if语句语法如下:
if expression:
do something1
do something2
next_something
如果表达式的值为非0或者布尔值True,则执行do_something,否则执行下一条语句。
- python支持if…else,还支持elif(else-if)
if expression:
do_something1
else:
do_something2
if expression1:
do_something1
elif expression2:
do_something2
else:
do_something3
- python并不支持switch/case这样的语句,也没有必要支持。实际上switch/case语法并不优雅。
- 如果条件分支太多,就可以考虑使用“表驱动”的方式来组织代码。
2.while循环
- while循环语句和if语句类似。只要表达式的值非0或者为True,就会执行do_something。
while expression:
do_something
# 循环执行三次print
count=0
while count<3:
print '%d' % count
count+=1
3.for循环
- python的for循环和传统的for循环不一样,python中的for循环为for-in。
- for循环可以接收可迭代对象(序列或者迭代器)作为参数,每次迭代其中的一个元素。
# arr可以是字符串、元组、列表和字典
for i in arr:
do_something
arr=(1,2,3)
for i in arr:
print i
str="haha"
for c in str:
print c
dist={'ip':"127.0.0.1",'port':8080}
for key in dist:
print key,dist[key]
- 内建函数range可以生成一个数字组成的列表,方便进行for循环遍历,range函数其实有三个参数。前两个参数分别表示前闭后开的区间,且这两个参数必须是整数。第三个参数表示step,即每次迭代的步长。
for i in range(1,5):
print("%f" % i)
for item in range(1,5,2):
print("loop %d" % item)
4.break和continue语句
- 使用break语句跳出当前循环。
- 使用continue语句,结束此次循环,回到循环顶端,判定循环条件。如果条件满足,则继续下一次循环。
for i in range(1,5):
if i%3==0:
break
print("i=%d" % i)
for i in range(1,5):
if i%3==0:
continue
print("i=%d" % i)
5.pass语句
其实就是空语句。有时候需要用到空语句这样的概念,什么都不做。由于没有{},就需要有一个专门的语句来占位,要不缩进就混乱了。
x=1
if x%2==0:
else:
print("x不能整除2")
# coding:utf-8
x=1
if x%2==0:
pass
else:
print("x不能整除2")
二、python的列表解析
- 使用for循环将生成的值放在一个列表中
# 生成[0,4)的数字的平方序列
squares=[x ** 2 for x in range(4)]
print squares
# 搭配if语句使用
# 获取[0,8)区间内的所有奇数
events=[x for x in range(0,8) if x%2==1]
print events
三、函数
- 一些可以被重复使用的代码,可以提取出来放到函数中。
- python使用def来定义一个函数,使用return来返回结果。
def add(x,y):
return x+y
print(add(3,2))
函数中的x和y即为形参,相当于数学中“未知数”的概念。add(3,2)中的3和2是实参,就是给未知数确定具体的数值。
- python没有“重载”的概念。相同名字的函数,后面的会覆盖前面的。
def func():
print 'aaa'
def func():
print 'bbb'
func()
执行结果:bbb
- python支持默认参数,函数的参数可以具备默认值。
def func(debug=True):
if debug:
print('in debug mode')
else:
print 'done'
func()
func(False)
- python解包(unpack)语法,函数返回多个值。
def GetPoint():
return 100,200
x,y=GetPoint()
print x,y
# 只关注y,不想关注x,可以使用_作为占位符
_,y=GetPoint()
print y
- 函数也是一个对象。一个函数和一个数字,字符串一样,都可以用“别名”来引用它。
- 函数既然也是一个对象,那么也可以作为另外一个函数的参数和返回值。
def GetPoint():
return 100,200
func_type=type(GetPoint)
print func_type
四、文件操作
使用内建函数open打开一个文件,其中file_name是文件的名字,也可以是绝对路径或者相对路径。access_mode是文件的打开方式,选项有以下几种:
‘r’:只读
‘w’:只写
‘a’:追加写
‘t’:按文本方式读写
‘b’:按二进制方式读写
handler=open(file_name,access_mode='r')
# 如:
handler=open('text.txt',access_mode='r')
或者
handler=open('/相对路径',access_mode='r')
其中,handler是一个文件句柄,是一个可迭代的对象,可以直接使用for循环按行读取文件内容:
for line in handler:
print line # 打印每行的内容
handler使用完毕,需要close掉,否则会引起资源泄露(一个进程能打开的句柄数目是有限的)
handler.close()
例子:统计text.txt文件中每行每个单词出现的次数
# coding:UTF-8
handler=open('text.txt','r')
handler=open('text.txt','r')
words={} # 定义words为字典类型,key为文件中每行的单词,value为单词出现的次数
for word in handler:
word=word[:-1] # 去掉末尾的\n
print(word) # 打印每行的单词
# print(type(word)) # 'str' word是字符串类型
if word not in words: # 使用in关键字判定这个单词是否是字典的key
words[word]=1
else:
words[word]+=1;
handler.close()
print words
五、模块
当我们一个项目的代码量较大的时候,需要把代码放到多个不同的.py文件中:
- 可以通过import关键字,引用其它.py文件中的代码
- 被引入的这个代码文件,就称之为“模块”。
- 被引入的文件,去掉.py后缀名后,即为模块名。
# coding:UTF-8
from t import add
from t import reduce
def reduce(x,y):
return x-y;
test=add(2,3)
print test
print add(1,2)
print reduce(1,2) # 不论是否导入t.py中的reduce,调用的都是本文件下的reduce函数
或者给模块名起一个别名
import t # 直接引入t模块,后面通过“模块名.函数名”调用
def reduce(x,y):
return x-y;
test=t # 给模块名起一个别名
print test.add(1,2) # 3
print t.add(1,2) # 3
print test.reduce(1,2) # 2
print t.reduce(1,2) # 2
import sys
print sys.path #打印出了模块查找的路径