python再学习笔记
python各种半桶水QAQ,一些特性经常跟其他语言搞混,官方入门文档重读温习......
最好用4个空格的缩进
空值是Python里一个特殊的值,用None表示
变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来
编码问题:
print u'中'.encode('utf-8')
另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字:classmates = ('Michael', 'Bob', 'Tracy')
可以用一个list表示:classmates = ['Michael', 'Bob', 'Tracy']
用Python写一个dict如下:
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合: s = set([1, 2, 3])
if注意不要少写了冒号:
if age >= 6:
print 'teenager'
for x in range(100):
sum = sum + x
必须先用int()把字符串强制转换为我们想要的整型:
birth = int(raw_input('birth: '))
在Python中,定义一个函数要使用def语句,函数的返回值用return语句返回。
我们以自定义一个求绝对值的my_abs函数为例:
def my_abs(x):
if x >= 0:
return x
else:
return -x
def nop():
pass
实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码
函数可以返回多个值吗?答案是肯定的。
return nx, ny
要注意定义可变参数和关键字参数的语法:
*args是可变参数,args接收的是一个tuple
**kw是关键字参数,kw接收的是一个dict
对应上面的问题,取前3个元素,用一行代码就可以完成切片:
>>> L[0:3]
创建一个generator:L = [x * x for x in range(10)]
对应到编程语言,就是越低级的语言,越贴近计算机,抽象程度低,执行效率高,比如C语言;越高级的语言,越贴近计算,抽象程度高,执行效率低,比如Lisp语言。函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!结论:函数本身也可以赋值给变量,即:变量可以指向函数。
Python内置的sorted()函数就可以对list进行排序: sorted([36, 5, 12, 9, 21])
正常的函数和变量名是公开的(public),可以被直接引用,比如:abc,x123,PI等;
类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名;
类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等;
Python有两个封装了setuptools的包管理工具:easy_install和pip。目前官方推荐使用pip。
eg.: pip install PIL
Python提供了__future__模块,把下一个新版本的特性导入到当前版本,于是我们就可以在当前版本中测试一些新版本的特性。
面向对象:
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def print_score(self):
print '%s: %s' % (self.name, self.score)
class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的。
__init__和__del__分别完成初始化和删除操作
任何时候,如果没有合适的类可以继承,就继承自object类。
通过多重继承,一个子类就可以同时获得多个父类的所有功能。
class TestClass(object):
val1 = 100
def __init__(self):
self.val2 = 200
def fcn(self,val = 400):
val3 = 300
self.val4 = val
self.val5 = 500
这里,val1是类变量,可以由类名直接调用,也可以有对象来调用;
val2是成员变量,可以由类的对象来调用,这里可以看出成员变量一定是以self.的形式给出的,因为self的含义就是代表实例对象;
val3不是成员变量,它只是函数fcn内部的局部变量;
val4和val5也都不是成员变量,虽是以self.给出,但并没有在构造函数中初始化。
所以高级语言通常都内置了一套try...except...finally...的错误处理机制,Python也不例外。
当我们认为某些代码可能会出错时,就可以用try来运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块,执行完except后,如果有finally语句块,则执行finally语句块,至此,执行完毕。finally如果有,则一定会被执行(可以没有finally语句)。
如果要抛出错误,首先根据需要,可以定义一个错误的class,选择好继承关系,然后,用raise语句抛出一个错误的实例.
Python的os模块封装了常见的系统调用,其中就包括fork,可以在Python程序中轻松创建子进程
在Unix/Linux下,multiprocessing模块封装了fork()调用,使我们不需要关注fork()的细节。由于Windows没有fork调用,因此,multiprocessing需要“模拟”出fork的效果,父进程所有Python对象都必须通过pickle序列化再传到子进程去,所有,如果multiprocessing在Windows下调用失败了,要先考虑是不是pickle失败了。
多任务可以由多进程完成,也可以由一个进程内的多线程完成。
Python的标准库提供了两个模块:thread和threading,thread是低级模块,threading是高级模块,对thread进行了封装。绝大多数情况下,我们只需要使用threading这个高级模块。
有了准备知识,我们就可以在Python中使用正则表达式了。Python提供re模块,包含所有正则表达式的功能。
Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。
好在Python提供了HTMLParser来非常方便地解析HTML,只需简单几行代码:
PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。
所以,我们要创建一个基于TCP连接的Socket,可以这样做:
# 导入socket库:
import socket
# 创建一个socket:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 建立连接:
s.connect(('www.sina.com.cn', 80))
[import fibo]
这样做不会直接把 fibo 中的函数导入当前的语义表;它只是引入了模块名 fibo。
import 语句的一个变体直接从被导入的模块中导入命名到本模块的语义表中。例如:
>>> from fibo import fib, fib2
>>> fib(500)
甚至有种方式可以导入模块中的所有定义:
>>> from fibo import *
在from aaa import bbb中:
aaa是一个module
bbb是一个方法或者类搜索
bbb是在aaa下的
用if __name__ == '__main__'来判断是否是在直接运行该.py文件
1.os 和操作系统有关
2.time 与时间有关
3.pcap 抓包
4.dpkt 解包和组包
5.pymssql 进行mssql数据库操作
6.cProfile 自己debug脚本性能时用的,可以精确快速计算运行时间
7.urllib2 最早接触的库之一,跟HTTP有关
8.httplib 与HTTP有关
9.smtplib SMTP的lib
10.poplib POP3的lib
11.tarfile 解tar包
12.socket 最原始的tcp库
13.paramiko SSH SFTP
14.psyco 增强性能,对函数和类,尤其包含多次循环的非常有效
15.pywin32 运用windows的API
16.selenium 界面自动化
17.sqlite3 sqlite3数据库操作
18.email 邮件的编码解码
19.stackless 微线程,据有关人测试,可以达到普通线程的十倍性能
20.wx wxpython,写界面用的
21.py2exe 把py程序弄成exe可执行的
22.shutil 很有用,copy,删除
23.thread 普通线程
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": " ...
- js再学习笔记
#js再学习笔记 ##基本 1.js严格区分大小写 2.js末尾的分号可加,也可不加 3.六种数据类型(使用typeof来检验数据的类型) `typeof` - undefined: `var ...
- 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 基础学习笔记(超详细版)
1.变量 python中变量很简单,不需要指定数据类型,直接使用等号定义就好.python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前 ...
随机推荐
- 建立本地yum仓库
[root@ks-server ~]# cd /etc/yum.repos.d/[root@ks-server yum.repos.d]# ls CentOS-Base.repo CentOS-Med ...
- 【AMAD]django-filter -- 一个通用的,基于用户选择的Django Queryset 过滤系统
简介 用法 和DRF集成 个人评分 简介 django-filter1可以通过URL的query string参数,动态对Queryset进行过滤. 用法 import django_filters ...
- Introduction - Welcome
摘要: 本文是吴恩达 (Andrew Ng)老师<机器学习>课程,第一章<绪论:初识机器学习>中第1课时<欢迎参加机器学习课程>的视频原文字幕.为本人在视频学习过程 ...
- docker挂载本地目录的方法总结
docker挂载本地目录的方法总结: Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定. 譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录, ...
- Spring 控制器层如何调用DAO层
1.写上注解 @Autowired 2.声明一个变量 private UserDao userDao; 3.注意!Spring里面数据库对象操作类不需要实例化就能调用
- Vue2.4+新增属性.sync、$attrs、$listeners
参考链接:https://www.jianshu.com/p/4649d317adfe
- sqlmap(网站数据库注入)
*教程 http://www.nxadmin.com/tools/1241.html 一.ASP网站 1. sqlmap -u “http://www.czypjx.com/News_show.asp ...
- 学习笔记:CentOS7学习之十七: Linux计划任务与日志的管理
目录 学习笔记:CentOS7学习之十七: Linux计划任务与日志的管理 17.1 计划任务-at-cron-计划任务使用方法 17.1.1 at计划任务的使用 17.1.2 查看和删除at将要执行 ...
- UWP笔记-消息弹窗自动淡出
为了让用户有个更好的UI交互,可以增加自动淡出的消息弹窗,例如:网易云音乐UWP,切换播放模式时,出现的类似消息提示. 右键项目,添加用户控件 UserControlDemo.xaml: <Us ...
- MIT 6.828 课程介绍
MIT 6.828 课程介绍 本文是对MIT 6.828操作系统课程介绍的简单摘录,详细介绍见6.828: Learning by doing以及朱佳顺的推荐一门课:6.828.学习资源均可以在课程主 ...