学习python快2个星期了,从刚开始看Learn Python the Hard Way开始,翘完前40例代码,后面的案例难度就大幅增加,于是转学小甲鱼的Python。目前刚看完前52集的基础篇,简单记录了些知识点。
1、member[1:4] #第2个元素到第三个元素,即member[1]、member[2]
2、列表操作:
list3.count(123) #计算列表中123出现的次数
list3.index(123) #索引列表中123第一次出现的位置
list3.index(123,3,7) #从3到7中索引123第一次出现的位置
list3.reverse() #列表反转
list3.sort() #从小到大排序
list3.sort(reverse(true))
3、字符串操作:
capitalize() #把字符串的第一个字符改为大写
casefold() #把整个字符串的所有字符改为小写
center(width) #将字符串居中,并使用空格填充至长度width的新字符串
count
endswith(sub[,start[,end]]) #检查字符串是否以sub字符串结束
expandtabs([tabsize=8]) #把字符串中的tab符号(\t)转换为空格,默认的空格数是tabsize=8
find (sub[,start[,end]) #检测sub是否包含在字符串中,返回索引值
index(sub,[,start[,end]])
join(sub) #以字符串作为分隔符,插入到sub中所有的字符之间
partition(sub) #找到子字符串sub,把字符串分成一个3元组
replace(old,new[,count])
rfind(sub,[,start[,end]]) #类似于find,从右开始查找
rstrip() #删除字符串末尾的空格
split() #字符串自动切片,默认为空格
strip([chars])#删除字符串前边和后边所有的空格,chars参数可以定制删除的字符,可选
swapcase() #翻转字符串中的大小写
translate(table)
4、函数内嵌、闭包
def FunX(x):
def FunY(y):
return x*y
return FunY
调用: Funx(8)(5) ,输出为40.
i)如果希望在函数中修改全局变量,关键词:global
ii)在嵌套的函数中,如果希望在内部函数修改外部函数的局部变量,应该使用什么关键字呢? 关键词: nonlocal
def outside():
print('I am outside!')
def inside():
print ('I am inside!')
inside() #会报错
正确调用:
def outside():
print('I am outside!')
def inside():
print ('I am inside!')
inside()
outside()
使用嵌套函数要注意一点就是作用域问题,inside()函数是内嵌在outside()函数中的,所以除了outside()可以调用,在外边或者别的函数体里是无法对其进行调用的
6、函数 lambda
EX:
g = lambda x : 2 * x + 1
g(5)
7、内建函数bif(很多,不一一列举)
(1)filter ----过滤器
Ex: 过滤偶数
def odd(x):
return x%2
temp = range(10)
show = filter(odd,temp)
list(show)
---------------------------------------------
list(filter(lambda x: x%2, range(10)))
(2)map ----映射
list(map(lambda x :x*2,range(10)))
8、函数zip
>>>list(zip([1,3,5,7,9],[2,4,6,8,10]))
[(1,2),(3,4),(5,6),(7,8),(9,10)]
函数map
>>>list(map(lambda x,y :[x,y],[1,3,5,7,9],[2,4,6,8,10]))
[[1,2],[3,4],[5,6],[7,8],[9,10]]
9、递归
hanoi、 fibonacci
# -*- coding: cp936 -*-
def hanoi(n,x,y,z):
if n==1:
print(x,'-->',z)
else:
hanoi(n-1,x,z,y)#将前n-1个盘子从x移动到y上
print(x,'-->',z)#将最底下的最后一个盘子从x移动到z上
hanoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上
n = int(input('请输入汉诺塔的数量:'))
hanoi(n,'X','Y','Z')
10、字典操作
popitem() #(随机)弹出,字典中元素没有顺序
setdefault() #Python 字典 setdefault() 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。
update :
#!/usr/bin/python3
dict = {'Name': 'Runoob', 'Age': 7}dict2 = {'Sex': 'female' }
dict.update(dict2)print ("更新字典 dict : ", dict)
更新字典 dict : {'Sex': 'female', 'Age': 7, 'Name': 'Runoob'}
fromkeys():
>>>dict1.fromkeys((1,2,3),'Number')
{1:'Number',2:'Number',3:'Number'}
获取字典的item\value\key :items()、values()、keys()
11、文件
r 以只读方式打开文件
w 写入
a 写入模式打开,若存在则末尾追加
x 如果已存在,打开将发生异常
b 二进制模式打开
t 以文本模式打开
- 可读写模式
U 通用换行符支持
f.close() 关闭文件
f.read(size=-1) 从文件读取size个字符,当 未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回
f.readline() 以写入模式打开,如果文件存在则在末尾追加写入
f.write(str) 将字符串str写入文件
f.writelines(seq) 向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象
f.seek(offset,from) 在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
f.tell() 返回当前在文件中的位置
12、模块
os模块中关于文件/目录常用的函数使用方法
函数名 使用方法
getcwd() 返回当前工作目录
chdir(path) 改变工作目录
listdir(path='.') 列举指定目录中的文件名('.'表示当前目录,'..'表示上一级目录)
mkdir(path) 创建单层目录,如该目录已存在抛出异常
makedirs(path) 递归创建多层目录,如该目录已存在抛出异常,注意:'E:\a\b'和'E:\a\c'并不会冲突
remove(path) 删除文件
rmdir(path) 删除单层目录,如该目录非空则抛出异常
removedirs(path) 递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常
rename(old, new) 将文件old重命名为new
system(command) 运行系统的shell命令
walk(top) 遍历top路径以下所有的子目录,返回一个三元组:(路径, [包含目录], [包含文件])
以下是支持路径操作中常用到的一些定义,支持所有平台
os.curdir 指代当前目录('.')
os.pardir 指代上一级目录('..')
os.sep 输出操作系统特定的路径分隔符(Win下为'\',Linux下为'/')
os.linesep 当前平台使用的行终止符(Win下为'\r\n',Linux下为'\n')
os.name 指代当前使用的操作系统(包括:'posix', 'nt', 'mac', 'os2', 'ce', 'java')
os.path模块中关于路径常用的函数使用方法
函数名 使用方法
basename(path) 去掉目录路径,单独返回文件名
dirname(path) 去掉文件名,单独返回目录路径
join(path1[, path2[, ...]]) 将path1, path2各部分组合成一个路径名
split(path) 分割文件名与路径,返回(f_path, f_name)元组。如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在
splitext(path) 分离文件名与扩展名,返回(f_name, f_extension)元组
getsize(file) 返回指定文件的尺寸,单位是字节
getatime(file) 返回指定文件最近的访问时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)
getctime(file) 返回指定文件的创建时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)
getmtime(file) 返回指定文件最新的修改时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)
以下为函数返回 True 或 False
exists(path) 判断指定路径(目录或文件)是否存在
isabs(path) 判断指定路径是否为绝对路径
isdir(path) 判断指定路径是否存在且是一个目录
isfile(path) 判断指定路径是否存在且是一个文件
islink(path) 判断指定路径是否存在且是一个符号链接
ismount(path) 判断指定路径是否存在且是一个挂载点
samefile(path1, paht2) 判断path1和path2两个路径是否指向同一个文件
13、pickle
将字符串、列表元组等以二进制形式写入
my_list = [123, 3.14, '小甲鱼', ['another list']]
pickle_file = open('my_list.pkl','wb')
pickle.dump(my_list,pickle_file)
pickle_file.close()
pickle_file = open('my_list.pkl','rb')
my_list2 =pickle.load (pickle_file)
print(my_list2)
14、 封装 继承 多态
单词解释:
class(类):告诉python去创建一个新类型。
object(对象):有两种意思,事物的基本类型,或者事物的实例化。
instance(实例):你通过python创建一个类所获得的。
def:用来在类中定义一个函数。
self:在一个类包含的函数中,self是一个用来访问实例或对象的变量。
inheritance:概念,表示一个类可以继承另一个类的特征,就像你和你的父母。
composition:概念,表示一个类可以包含其他类,就像汽车轮子。
attribute:类所拥有的特性,通常是变量。
is-a:惯用语,表示一个东西继承自另一个东西(a),像在“鲑鱼”是“鱼”。
has-a:惯用语,表示由其他事情或有一个特征(a),如“鲑鱼有嘴。”
短语解释
class X(Y):创建一个叫X的类,并继承Y。
class X(object): def init(self, J):类X有一个init方法,该方法有self和J两个参数。
class X(object): def M(self, J):类X有一个叫M的函数,该函数有self和J两个参数。
foo = X():给foo赋值为类X的一个实例。
foo.M(J):从foo里调用M函数,传递的参数为self和J。
foo.K = Q:从foo里调用K属性,并将其设置为Q。
15、init(self)
类似于构造函数
super() 用于继承所有父类的函数
如
super(父类,self).__init__()
组合
class Turtle:
def__init__(self,x):
self.num=x
class Fish:
def __init__(self,x):
self.num =x
class Pool:
def __init__(self,x,y):
self.turtle=Turtle(x)
self.fish=Fish(y)
16、描述符(property的原理)
class Celsius:
def __init__(self, value =26.0):
self.value = float(value)
def __get__(self,instance,owner):
return self.value
def __set__(self,instance,value):
self.value = float(value)
class Fahrenheit:
def __get__(self,instance,owner):
return instance.cel*1.8+32
def __set__(self,instance,value):
instance.cel= (float(value)-32)/1.8
class Temperature:
cel = Celsives()
fah = Fahrenheit()
class Temperature:
cel = Celsius()
17、可变长定制列表
class CountList(list):
def __init__(self,*args):
super(CountList,self).__init__(args)
self.count = []
for i in args:
self.count.append(0)
def __len__(self):
return len(self.count)
def __getitem__(self,key):
self.count[key] += 1
return super(CountList,self).__getitem__(key)
def __setitem__(self,key,value):
self.count[key] +=1
super(CountList,self).__setitem__(key,value)
def __delitem__(self,key):
del self.count[key]
super(CountList,self).__delitem__(key)
def count(self,key):
return self.count[key]
def append(self,value):
self.count.append(0)
super(CountList,self).append(value)
def pop(self, key=-1):
del self.count[key]
return super(CountList,self).pop(key)
def remove(self,value):
key = super(CountList,self).index(value)
del self.count[key]
super(CountList,self).remove(value)
def insert(self,key,value):
self.count.insert(key,0)
super(CountList,self).insert(key,value)
def clear(self):
self.count.clear()
super(CountList,self).clear()
def reverse(self):
self.count.reverse()
super().reverse()
网友评论