注释
'''
这是多行注释1
这是多行注释2
这是多行注释3
'''
"""
这是多行注释1
这是多行注释2
这是多行注释3
"""
#这是单行注释
py文件中使用中文
py文件中使用中文, 在文件第一行指定字符编码
# -*- coding:utf-8 -*-
在vim中如下命令设置编码
:set fileencoding=utf-8
代码如下:
# -*- coding:utf-8 -*-
chinese = '''
在python中使用中文
注意字符编码问题
字符编码有:utf-8, cp936, gb2312, iso-9959-1
'''
print chinese.decode('utf-8').encode('cp936')
元组
tuple1 = (1, 3, 5, 7)
print tuple1[0] # 打印第一个元素
列表
list1 = [1, 2, 3, 4, 5]
print list1[0] # 打印第一个元素
list1.append(6) # 在末尾添加一个元素
字典
dict1 = {'a':1, 'b':2, 'c':3}
print dict1['a'] # 打印
dict1['d'] = 4 # 添加
for key in dict1: # 遍历字典
print dict1[key]
文件操作
f = open("a.txt", "w")
f.write("python\n")
s = []
for i in range(10):
s.append(str(i) + '\n')
f.writelines(s)
f.close()
f = open('a.txt', 'r')
s = f.read()
print s
f.close()
if 语句
a = 3
b = 5
if a > b:
print "%s > %s" %(a, b)
elif a < b:
print "%s < %s" %(a, b)
else:
print "%s = %s" %(a, b)
for 循环
for i in range(1, 10):
if i % 2 == 0:
print "%d is even" %(i)
if i == 3:
print "3"
continue
if i == 5:
break
while 循环
x = 1
while x <= 5:
print x
x += 1
else:
print "循环没有被break终止就会执行else"
函数
def sumList(number_list):
s = 0
for i in number_list:
s += i
return s
nums = [1, 2, 3]
print sumList(nums)
def hi(name="Tom"):
print "hi %s" %(name)
hi()
函数参数默认值
def fun(x, y, z):
return x + y - z
fun(1, 2, 3)
fun(z=1, x=3, y=2)
可变参数
函数可以有任意多个参数,使用变长参数,所有参数保存在一个元组中。 以”*”开头定义一个参数即可
def myListAppend(*myList):
l = []
for i in myList:
l.extend(i)
return l
a = [1, 2, 3]
b = [4, 5, 6]
myList = myListAppend(a, b)
print myList
global 关键字
def fun(x):
global a # 声明a为全局变量
return a + x
a = 5
fun(3) # 值为8
a = 2
fun(3) # 值为5
lambda 表达式
fun = lambda x : x * x
fun(3) # 值为9
map 函数
def fun(x):
return x * x
print map(fun, [1, 2, 3, 4]) # 值为[1,4,9,16]
print [x*x for x in [1, 2, 3, 4]] # 效果一样
reduce 函数
f = lambda x, y : x + y
print reduce(f, [1, 2, 3, 4, 5]) # 值为 15
相当于执行了 (((1 + 2) + 3) + 4) + 5
filter 函数
f = lambda x : x % 2 == 0
print filter(f, [1, 2, 3, 4, 5]) # 值为[2, 4]
异常处理
try:
i = input("input a number:")
print 100 / i
except NameError:
print "Name error"
except:
import traceback
print traceback.print_exc()
finally:
print "This is finally!"
类
class Person:
def __init__(self, name): # 构造函数
self.name = name
def sayHi(self):
print 'Hello, my name is %s' %(self.name)
class Student(Person): # 类继承父类
def __init__(self, name, age):
Person.__init__(self, name)
self.age = age
def hi(self):
self.sayHi()
print "I am %s years old!" %(self.age)
p = Student('Tom', 21)
p.hi()
模块
模块定义
#!/usr/bin/env python
# Filename: myModule.py
def printIt(s):
print s
模块调用
import sys
import math as m
from xml.etree import ElementTree
import myModule
print sys.copyright
print m.sin(3.1415)
print myModule.printIt("abcdef")
如果让一个文件夹成为模块放 在文件夹中加入 __init__.py 的文件
闭包
def plus(number):
# 在函数内部再定义一个函数, 这个里面的函数就被认为是闭包
def plus_in(number_in):
print 'inner:' + str(number_in)
return number + number_in
# 这里返回的就是闭包的结果
return plus_in
# 给plus函数赋值, 20给参数number
v1 = plus(20)
# 100 给参数number_in
print v1(100)
在调用plus时候就产生了一个闭包 plus_in, 并且该闭包持有自由变量 number, 当函数plus生命周期结束之后,number这个变量依然存在, 因为它被闭包引用了,所以不会被回收。