python完全学习笔记
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', |
os.path模块中关于路径常用的函数使用方法
函数名 |
使用方法 |
basename(path) |
去掉目录路径,单独返回文件名 |
dirname(path) |
去掉文件名,单独返回目录路径 |
join(path1[, path2[, ...]]) |
将path1, |
split(path) |
分割文件名与路径,返回(f_path, |
splitext(path) |
分离文件名与扩展名,返回(f_name, |
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生成一个迭代器
关于yield的高级作用:http://bbs.fishc.com/thread-56023-1-3.html
模块:
Already know.
python完全学习笔记的更多相关文章
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- Python Click 学习笔记(转)
原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发 ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Python Flask学习笔记之模板
Python Flask学习笔记之模板 Jinja2模板引擎 默认情况下,Flask在程序文件夹中的templates子文件夹中寻找模板.Flask提供的render_template函数把Jinja ...
- Python Flask学习笔记之Hello World
Python Flask学习笔记之Hello World 安装virtualenv,配置Flask开发环境 virtualenv 虚拟环境是Python解释器的一个私有副本,在这个环境中可以安装私有包 ...
- 获取字段唯一值工具- -ArcPy和Python案例学习笔记
获取字段唯一值工具- -ArcPy和Python案例学习笔记 目的:获取某一字段的唯一值,可以作为工具使用,也可以作为函数调用 联系方式:谢老师,135-4855-4328,xiexiaokui# ...
- Python高级学习笔记
Python高级学习笔记,此笔记中包含Linux操作系统.Html+CSS+JS.网络协议等. 所有思维导图为本人亲手所画,请勿用于商用. 大哥们,求点赞哦. 第一天笔记:链接 第二天笔记:链接 第三 ...
- Python入门学习笔记4:他人的博客及他人的学习思路
看其他人的学习笔记,可以保证自己不走弯路.并且一举两得,即学知识又学方法! 廖雪峰:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958 ...
- Python 基础学习笔记(超详细版)
1.变量 python中变量很简单,不需要指定数据类型,直接使用等号定义就好.python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前 ...
- Python人工智能学习笔记
Python教程 Python 教程 Python 简介 Python 环境搭建 Python 中文编码 Python 基础语法 Python 变量类型 Python 运算符 Python 条件语句 ...
随机推荐
- CTF<密码学> writeup 传统知识+古典密码
小明某一天收到一封密信,信中写了几个不同的年份 辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳. 信的背面还写有“+甲子”,请解出这段密文. key值:CTF{XXX} 百度可以查到 ...
- git泄露利用脚本
留一下万一之后用得着呢 工作原理 1.解析.git/index文件,找到工程中所有的: ( 文件名,文件sha1 ) 2.去.git/objects/ 文件夹下下载对应的文件 3.zlib解压文件,按 ...
- js中报错"Maximum call stack size exceeded"解决方法
Uncaught RangeError: Maximum call stack size exceeded 错误直译过来就是“栈溢出”,出现这个错误的原因是因为我进行了递归运算,但是忘记添加判断条件, ...
- oracle--dump 事务槽
01,创建环境 SQL> create table t3 (id int); Table created. SQL); row created. SQL); row created. SQL); ...
- 安装APK时报 Installation failed with message Failed to finalize session : INSTALL_FAILED_USER_RESTRICTED: Invalid apk.
Installation failed with message Failed to finalize session : INSTALL_FAILED_USER_RESTRICTED: Invali ...
- Python归纳 | WSGI协议
1.WSGI介绍 1.1什么是WSGI 1.2怎么实现WSGI 2.由Django框架分析WSGI 3.实际环境使用的wsgi服务器 4.WSGI服务器比较
- (转)虚拟路由器冗余协议【原理篇】VRRP详解
原文:http://blog.51cto.com/zhaoyuqiang/1166840 为什么要使用VRRP技术 我们知道,为了实现不同子网之间的设备通信,需要配置路由.目前常用的指定路由方法有两种 ...
- js中的 == 与 === 、永远不要使用 ==
前言: 很久没有复习基础了,所以导致做项目的时候被坑,咳咳,基础还是很重要的. === 是没有强制类型转换的,和其他大部分语言的 == 是一样的.而js中 == 是有类型转换的,这也是js饱受诟病的原 ...
- unity 读取外部exe程序控制台信息
由于需要获取显卡信息,但是unity的自带函数,只能输出1个显卡 c#倒是可以但是引用了一个下载的dll System.Management.dll 这个dll放到unity用不了,因为mono不 ...
- php操作Excel
php操作Excel 1.new PHPExcel对象$objPHPExcel = new PHPExcel(); 2表的初始化设置$objPHPExcel->getProperties()-& ...