一、基本的语法
1、模块的导入
import **
import sys
sys.path #返回的目录列表
sys.argv #自带参数、返回的文件名
from import *
from sys import path
print path
2、使用空行分隔代码:空行也是程序代码的一部分
3、使用“;和\用作换行
4、给多个变量赋值
a=(1,2,3)
(x,y,z)=a
print x,y,z
5、全局变量与局部
_a=1
_b=2
def add ():
global _a
_a=3
return “_a+_b=”,_a+_b
def sub ():
global _b
_b=4
return “_a-_b=”,_a-_b
print add()
print sub()
输出
(‘_a+_b=’, 5)
(‘_a-_b=’, -1)
(1). 函数定义了本地作用域,而模块定义的是全局作用域。
(2). 如果想要在函数内定义全局作用域,需要加上global修饰符
(3). global—将变量定义为全局变量。可以通过定义为全局变量,实现在函数内部改变变量值。
6、const的用法
class Const(object):
class ConstError(TypeException): pass
def __setattr__(self, key, value):
if self.__dict__.has_key(key):
raise self.ConstError, "Changing const.%s" % key
else:
self.__dict__[key] = value
def __getattr__(self, key):
if self.__dict__.has_key(key):
return self.key
else:
return None
import sys
sys.modules[__name__] = Const()
类定义一个方法setattr(),和一个异常类型ConstError(继承自TypeError)。调用类自带的字典dict,判断自定义的常量是否在字典中,如果字典中包含此常量,将抛出异常,如果没有,给新创建的常量赋值。最后两行代码是把const类注册到sys.modules这个全局字典中
7、id(i):查看变量的id号;type(i):i数据类型
>>> i=1
>>> print type(i)
<type 'int'>
>>> print id(i)
13204072
8、单引号、双引号、三引号的用法
sr="'he say"' hello world!"'
>>> print sr
'he say hello world!"
python中不支持自增、自减的功能,A**B表示幂次方
9、捕获原始输入:input()和raw_input()
input()不支持输入的字符串
10、range()函数生成迭代集合,返回的是一个列表
xrang()返回的是一个xrange()对象
xrang([start,]stop [,step])>xrange object
#冒泡排序法,需要测试,程序没有测试成功
def bubbleSort (numbers):
for j in xrange(len(numbers)-1,-1,-1):
for i in xrange(j):
if numbers[i]>numbers[i+1]:
numbers[i],numbers[i+1]=numbers[i+1],numbers[i]
print numbers
def main ():
numbers=[23,12,9,15,6]
bubbleSort(numbers)
if __name__=='__main__':
main()
11、
(1)、元组:tuple_name[m:n]
tuple=("apple","banana","grape","orange")
>>> print tuple[-1]
orange
>>> print tuple[-2]
grape
>>> tuple2=tuple[1:3]
>>> print tuple2
('banana', 'grape')
>>> tuple3=tuple[0:-2]
>>> print tuple3
('apple', 'banana')
(2)、list的用法
append()后接一个、insert(,)插入、remove()移除、pop()删除最后一个进入列表的
>>> list=["apple","banana","grape","orange"]
>>> list.append("water")
>>> list.insert(1,"grapefruit")
>>> list.remove("grape")
>>> print list
['apple', 'grapefruit', 'banana', 'orange', 'water']
>>> print list.pop()
water
>>> print list
['apple', 'grapefruit', 'banana', 'orange']
sort()排序、reversed()反转
12、字典
(1)、代码中书写的顺序不是字典的实际存储顺序。按照每个元素的Hashcode值进行排列
>>> dict={"a":"apple","b":"banana","g":"grape"}
>>> print dict
{'a': 'apple', 'b': 'banana', 'g': 'grape'}
>>> dict={"a":"apple","g":"grape","b":"banana"}
>>> print dict
{'a': 'apple', 'b': 'banana', 'g': 'grape'}
(2)、字典的访问
删除时del()而不是remove()、字典的操作是对索引的操作
(3)、字典的方法
a、Key()和values()方法:返回Key()和values()的列表
>>> dict={"a":"apple","b":"banana","c":"grape","d":"orange"}
>>> print dict.keys()
['a', 'c', 'b', 'd']
>>> print dict.values()
['apple', 'grape', 'banana', 'orange']
b、获取values的值:dict.get(“c”)
c、update()方法
>>> D={"key1":"value1","key2":"value2"}
>>> E={"key3":"value3","key4":"value4"}
>>> for k in E:
D[K]=E[K]`
e、setdefault方法
>>> dict={}
>>> print dict
{}
>>> dict.setdefault("a","default")
'default'
>>> print dict
{'a': 'default'}
>>>
f、copy方法:直接覆盖
>>> dict={"a":"apple","b":"banana"}
>>> dict2={"c":"grape","d":"orange"}
>>> dict2=dict.copy()
>>> print dict2
{'a': 'apple', 'b': 'banana'}
g、字典的排序:
sorted(data, cmp=None, key=None, reverse=False)
data为数据
cmp和key均为比较函数
reverse为排序方向,True为倒序,False为正序
复杂列表
>>> student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),
]
>>> sorted(student_tuples, key=lambda student: student[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
如果列表内容是类的话,
>>> class Student:
def __init__(self, name, grade, age):
self.name = name
self.grade = grade
self.age = age
def __repr__(self):
return repr((self.name, self.grade, self.age))
>>> student_objects = [
Student('john', 'A', 15),
Student('jane', 'B', 12),
Student('dave', 'B', 10),
]
>>> sorted(student_objects, key=lambda student: student.age) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
此外,Python提供了operator.itemgetter和attrgetter提高执行速度
>>> student ={("xiaoming",60),("daxiong", 20),("maodou", 30)}
>>> sorted(student, key=lambda d:d[1])
[('daxiong', 20), ('maodou', 30), ('xiaoming', 60)]
>>> sorted(student, key=itemgetter(1))
[('daxiong', 20), ('maodou', 30), ('xiaoming', 60)]
sorted(student, key=itemgetter(0,1))
[('daxiong', 20), ('maodou', 30), ('xiaoming', 60)]
operator.methodcaller()函数会按照提供的函数来计算排序。
首先通过count函数对”!”来计算出现次数,然后按照出现次数进行排序。
>>> messages = ['critical!!!', 'hurry!', 'standby', 'immediate!!']
>>> sorted(messages, key=methodcaller('count', '!'))
['standby', 'hurry!', 'immediate!!', 'critical!!!']
h、deepcopy()深拷贝:拷贝所有是的数据和引用(引用相当于指针)
copy()浅拷贝:只拷贝数据
>>> import copy
>>> dict={"a":"apple","b":{"g":"grape","o":"orange"}}
>>> dict2=copy.deepcopy(dict)
>>> dict3=copy.copy(dict)
>>> dict2["b"]["g"]="orange"
>>> print dict2
{'a': 'apple', 'b': {'g': 'orange', 'o': 'orange'}}
>>> dict3["b"]["g"]="orange"
>>> print dict3
{'a': 'apple', 'b': {'o': 'orange', 'g': 'orange'}}
I、sys.modules模块:记录导入的新的模块
二、模块与函数
1、模块的属性
三、字符串与正则表达式