标签:move 描述符 失败 smo 挂载点 序列 erro elf 操作系统
dir(__builtins__)
help(input)
‘let\‘s go‘ #转义字符 \
r‘c:\now‘ #字符串前加r 自动转义
str= ‘‘‘
shdiufhi
sdfjskldfjk
dfdfsdf
‘‘‘ #多行打印
isinstance(i , str) #判断是否符合str类型
// #地板除法
2 ** 4 #16 幂运算
-3 ** 2 #-9 优先级问题 比左侧优先级高右侧低
small = x if x<y else y #三元操作符
assert 3>4 #断言 错的抛出异常assertionexception
print(i, end = ‘ ‘) #
list.append()
list.extend()#参数中传入的数组进行组合
list.insert(1,value)#根据位置插入到列表中
list.remove()#移除目标
del list[1]#从内存中删除列表元素
list.pop()#随机pop或指定索引
list[:]#获得列表的拷贝
list可相加
in#可用来判断列表中是否包含
‘{0} love {1}‘.format(‘i‘, ‘u‘)
‘{a} love {b}‘.format(a= ‘i‘, b=‘u‘)
‘{0:.1f}{1}‘.format(12.32323, ‘mfc‘)
序列list turple 字符串
list(‘mengfanchen‘)
turple(‘mengfanchen‘)
sorted() #排序方法
enumerate() #转为元组
a=[1,2,3,4,5,6,7]
b=[3,5,7,4,8]
list(zip(a,b))=[(1,3),(2,5),(3,7),(4,4),(5,8)]# 嗯应该有用
函数:
明明规则首字母大写MengFanChen()
函数文档:
def MengFanChen(‘name‘, ‘age‘):
‘这是一个例子‘
print(‘this is mengfanchen!‘)
MengFanChen.__doc__就会返回上面的‘这是一个例子‘
关键字参数
MengFanChen(name = ‘mengfanchen‘, age=‘17‘)
默认参数
收集参数
def test(*params):
print(‘hahaha‘,len(params)
def test(**kwargs):
for key in kwargs:
print "another keyword arg: %s: %s" % (key, kwargs[key])
内嵌函数和闭包:
count = 5
def MyFun():
global count
count=10
print(count) #全局变量被修改global关键字
def FunX(x):
def FunY(y):
return x*y
return FunY
FunX(5)(8) ->40 #FunY即为一个闭包
i = FunX(5)
type(i) -> function #即为FunY
def Fun1():
x = 5
def Fun2():
nonlocal x
x *= x
return x
return Fun2() #nonlocal关键字可使Fun2()使用外部变量x 或者使用x[]因为不会被当作局部变量
lambda(匿名函数):
g= lamda x : 2*x+1
print(g(5)) #lamda省下定义函数的过程
filter:过滤
list(filter(None , [1,0,Falsr,True]))
->[1,True] #默认过滤出True类型
temp =range(10)
def odd(x):
return x%2
print(list(filter(odd, temp)))
->[1,3,5,7,9] #仔细想想是怎么求奇数的
用lambda实现上述例子
list(filter(lambda x : x%2, range(10))) #很强
map:映射
list(map(lambda x : x*2, range(10)))
[0,2,4,6,8,10,12,14,16,18] #map也有点有用
递归:
import sys
sys.setrecursionlimit(100000) #设置递归深度
字典与集合:
dict1 = dict.fromkeys([1,2,3,4,5], ‘mengfanchen‘)
{1: ‘mengfanchen‘, 2: ‘mengfanchen‘, 3: ‘mengfanchen‘, 4: ‘mengfanchen‘, 5: ‘mengfanchen‘}
6 in dict1 ->False
set:唯一&无序
num = [1,2,3,4,5,5,6]
num = list(set(num)) -> [1,2,3,4,5,6]
frozenset:不可变集合


标准读入文件方式:
for each_line in f:
Print(each_line) #官方文档推荐形式
模块是一个包含所有函数和变量的文件.py文件可引入可使用。
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两个路径是否指向同一个文件  | 
Pickle模块(对象,二进制互相转换)
Temp = [1,2,3,4,5]
Pickle_file = open(‘temp.pkl’, ‘wb’)
Pickle.dump(temp, pickle_file)
Pickle.close
Pickle_file = open(‘temp.pkl’, ‘rb’) #read binary
Temp = pickle.load(pickle_file)
异常处理:
几个语句,try catch finally raise
else(try后面可以加else不出错则执行else语句)
with(可以详细看一下,感觉很高端)
| 
 AssertionError  | 
 断言语句(assert)失败  | 
| 
 AttributeError  | 
 尝试访问未知的对象属性  | 
| 
 EOFError  | 
 用户输入文件末尾标志EOF(Ctrl+d)  | 
| 
 FloatingPointError  | 
 浮点计算错误  | 
| 
 GeneratorExit  | 
 generator.close()方法被调用的时候  | 
| 
 ImportError  | 
 导入模块失败的时候  | 
| 
 IndexError  | 
 索引超出序列的范围  | 
| 
 KeyError  | 
 字典中查找一个不存在的关键字  | 
| 
 KeyboardInterrupt  | 
 用户输入中断键(Ctrl+c)  | 
| 
 MemoryError  | 
 内存溢出(可通过删除对象释放内存)  | 
| 
 NameError  | 
 尝试访问一个不存在的变量  | 
| 
 NotImplementedError  | 
 尚未实现的方法  | 
| 
 OSError  | 
 操作系统产生的异常(例如打开一个不存在的文件)  | 
| 
 OverflowError  | 
 数值运算超出最大限制  | 
| 
 ReferenceError  | 
 弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象  | 
| 
 RuntimeError  | 
 一般的运行时错误  | 
| 
 StopIteration  | 
 迭代器没有更多的值  | 
| 
 SyntaxError  | 
 Python的语法错误  | 
| 
 IndentationError  | 
 缩进错误  | 
| 
 TabError  | 
 Tab和空格混合使用  | 
| 
 SystemError  | 
 Python编译器系统错误  | 
| 
 SystemExit  | 
 Python编译器进程被关闭  | 
| 
 TypeError  | 
 不同类型间的无效操作  | 
| 
 UnboundLocalError  | 
 访问一个未初始化的本地变量(NameError的子类)  | 
| 
 UnicodeError  | 
 Unicode相关的错误(ValueError的子类)  | 
| 
 UnicodeEncodeError  | 
 Unicode编码时的错误(UnicodeError的子类)  | 
| 
 UnicodeDecodeError  | 
 Unicode解码时的错误(UnicodeError的子类)  | 
| 
 UnicodeTranslateError  | 
 Unicode转换时的错误(UnicodeError的子类)  | 
| 
 ValueError  | 
 传入无效的参数  | 
| 
 ZeroDivisionError  | 
 除数为零  | 
内置异常类层次结构
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
      +-- StopIteration
      +-- ArithmeticError
      |    +-- FloatingPointError
      |    +-- OverflowError
      |    +-- ZeroDivisionError
      +-- AssertionError
      +-- AttributeError
      +-- BufferError
      +-- EOFError
      +-- ImportError
      +-- LookupError
      |    +-- IndexError
      |    +-- KeyError
      +-- MemoryError
      +-- NameError
      |    +-- UnboundLocalError
      +-- OSError
      |    +-- BlockingIOError
      |    +-- ChildProcessError
      |    +-- ConnectionError
      |    |    +-- BrokenPipeError
      |    |    +-- ConnectionAbortedError
      |    |    +-- ConnectionRefusedError
      |    |    +-- ConnectionResetError
      |    +-- FileExistsError
      |    +-- FileNotFoundError
      |    +-- InterruptedError
      |    +-- IsADirectoryError
      |    +-- NotADirectoryError
      |    +-- PermissionError
      |    +-- ProcessLookupError
      |    +-- TimeoutError
      +-- ReferenceError
      +-- RuntimeError
      |    +-- NotImplementedError
      +-- SyntaxError
      |    +-- IndentationError
      |         +-- TabError
      +-- SystemError
      +-- TypeError
      +-- ValueError
      |    +-- UnicodeError
      |         +-- UnicodeDecodeError
      |         +-- UnicodeEncodeError
      |         +-- UnicodeTranslateError
      +-- Warning
           +-- DeprecationWarning
           +-- PendingDeprecationWarning
           +-- RuntimeWarning
           +-- SyntaxWarning
           +-- UserWarning
           +-- FutureWarning
           +-- ImportWarning
           +-- UnicodeWarning
           +-- BytesWarning
           +-- ResourceWarning
Easygui
继承:
Class mylist(list):
实现了继承
多态
Python的魔法方法:
__init__(self) 构造方法
函数或变量名前加上两个’_’就会变成私有,伪私有。
class person():
__name = ‘mengfanchen’
p.__name不能调用,但是p._person__name就可以调用。
Python中也可以进行方法重写。

注意__init__方法也会被重写,按上面的方法写可以继承父类的属性。
Python可以进行多重继承。
尽量避免使用
__dict__方法可以显示对象的所有属性以及方法。
BIF:
Hasattr(),Getattr(),setattr(),delattr()
 
Property()方法,能够将对一个属性的操作集合到一个属性上。
如上图,del(c1.x)就可以调用delSize()将size属性删除。
构造和析构
魔法方法:
__init__
 
这里面的__new__一般不需要重写但是当类继承自不可变类型时(及不能进行__init__)可进行重写,必须要有返回值。

__del__方法,当对象被销毁时调用。
工厂函数:

如果想要类对象可以用print输出,需要重写__str__方法
如果想要直接得到类对象的值需要重写__repr__方法

通过属性调用属性,这个很有用啊。

这个是访问属性的时候他要先调用__getattribute__然后再是相关操作,__getattr__是当调用的属性不存储在的时候默认调用的方法。

Property的原理:描述符。如上
定制容器,如果容器不可变需要定义__len__()和__getitem__()方法。
如果可变则需要定义__setitem__()和__getitem()__方法。

上面的自定义容器是不可变的。
迭代器
__iter__(), __next__()两个魔法方法

生成器
Yield生成一个迭代器


标签:move 描述符 失败 smo 挂载点 序列 erro elf 操作系统
原文地址:http://www.cnblogs.com/sdfghj/p/6925765.html