Python基础知识整理

Python笔记

 

Python 2.0+

 

示例:

#!/usr/bin/python

print "Hello, World!"

 

 

 

--------Python开发基础----------------------------------------------------------------        

1 Python中文编码

2.7需要加上   # -*- coding: UTF-8 -*-

 

2 Python基础语法

标识符:

以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入;

以双下划线开头的 __foo 代表类的私有成员;以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。

缩进:

建议你在每个缩进层次使用 单个制表符 或 两个空格 或 四个空格 , 切记不能混用

可以使用斜杠( \)将一行的语句分为多行显示

注解:

#单行注解

’’’或””” 表示多行注解

等待用户输入:

raw_input()

Print输出:

默认换行,若不想换行末尾加上逗号print(x,y)

命令行参数:

getopt.getopt() 方法用于解析命令行参数列表

 

3 Python 变量类型

Numbers(数字),String(字符串),List(列表),Tuple(元组),Dictionary(字典)

数字数据Numbers: 是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。int(有符号整型),long(长整型),float(浮点型),complex(复数)

字符串String:[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符。

列表List:[]表示,可以切割和截取,有序的对象集合,通过偏移存取

元组Tuple:()表示,不能二次赋值,

字典Dictionary:{}表示,无序的对象集合,使用键存取,key-value

数据类型转换:只需要将数据类型作为函数名即可

 

4 运算符

算术运算符:%取模,**幂(即x的y次幂),//取整除(向下取整)。{python2.*中整数除整数只能得到整数,除非将其中一个改为浮点数)

比较运算符:<>不等于(即比较两个对象是否不相等)

赋值运算符:**=,//=

位运算符(把数字看作二进制来进行计算的):^按位异或运算符(即当两对应的二进位相异时结果为1),<<左移动运算符

逻辑运算符:and or not

成员运算符:in(在指定的序列中) ,not in

身份运算符:is(判断两个标识符是不是引用自一个对象),is not 

----is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等

运算符优先级:

 

5 条件语句

 

6 循环语句

while,while^else语句,ctrl+c可以中断循环

for,for^else语句(在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。)

嵌套循环,

 pass是空语句,是为了保持程序结构的完整性

 

7         Numbers类型转换

repr(x )                将对象 x 转换为表达式字符串

eval(str )              用来计算在字符串中的有效Python表达式,并返回一个对象

unichr(x )              将一个整数转换为Unicode字符

ord(x )                 将一个字符转换为它的整数值

一些数学函数:math模块运算的是浮点数,cmath模块运算的是复数

随机数函数:choice,randrange,random,seed,shuffle,uniform

 

8        字符串String转义字符,格式化字符串,三引号,字符串内建函数,

\a响铃,\v纵向制表符,

%c格式化字符,%s格式化字符串,%d格式化整数

三引号可以将复杂的字符串进行复制

 

9         元组的元素不能修改和删除,但是可以连接和删除整个元组

 

10        日期和时间

time.time(),time.localtime(),

格式化时间time,asctime()

格式化日期time.strftime()

calendar.month()

 

11        Python函数

函数传参:

不可更改类型:strings,tuple,numbers  --值传递(函数参数不可变类型)

可更改类型:list,dict        --引用传递(函数参数可变类型)

不定长参数

匿名函数:使用lambda来创建匿名函数 lambda [arg1 [,arg2,.....argn]]:expression

全局变量和局部变量

 

12 python模块(即.py)

如果要给函数内的全局变量赋值,必须使用 global 语句。 即global money

dir()函数:排序?

globals(),locals()

reload()函数:重新执行模块里顶层部分的代码

python中的包:文件中需要存在__init__.py 文件, 该文件的内容可以为空。__init__.py 用于标识当前文件夹是一个包。

 

13        python文件i/o

打印到屏幕:print()

读取键盘输入:raw_input()读取一行,input()读取一行,且可以作为表达式输入

打开文件:open()

file.close():方法刷新缓冲区里任何还没写入的信息,并关闭该文件

file.write():会在字符串的结尾添加换行符('\n')

file.read():从一个打开的文件中读取一个字符串

文件定位:tell()方法告诉你文件内的当前位置,seek(offset [,from])方法改变当前文件的位置

重命名文件:rename()

删除文件:remove()

创建文件:mkdir()

改变当前文件目录:chdir()

显示当前目录:getcwd()

删除目录:rmdir()

 

14        File方法

with open('/path/to/file', 'r') as f:

 

15        异常处理

try...except..else..没有异常则执行else后的语句

去掉权限 chmod -w testfil

try...finally..不管有没有异常,都会执行finally后的语句

触发异常:用户自己触发异常

用户自定义异常:

 

16        Python文件/目录方法

 

 

 

 

---------Python高级教程-----------------------------------------------------------------------

17 Python面向对象

创建类:

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类

对象销毁:

Python 使用了引用计数这一简单技术来跟踪和回收垃圾。

Python 的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器。

基础重载方法:

__init__ ( self [,args...] )构造函数

__del__( self )析构方法, 删除一个对象

类属性与方法:

类的私有属性:__private_attrs

类的私有方法:__private_method

类的方法:必须包含self

_foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *

__foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。

__foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的。

 

18        Python正则表达式

re.match(pattern, string, flags=0):

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

re.search(pattern, string, flags=0):

re.search 扫描整个字符串并返回第一个成功的匹配。

re.sub(pattern, repl, string, count=0, flags=0):

Python 的 re 模块提供了re.sub用于替换字符串中的匹配项。--且repl参数可以是一个自定义函数

re.compile(pattern[, flags]):

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

group([group1, …]),start([group]),end([group]) ,span([group])

findall(string[, pos[, endpos]]):

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表

re.finditer(pattern, string, flags=0):

在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

re.split(pattern, string[, maxsplit=0, flags=0]):

split 方法按照能够匹配的子串将字符串分割后返回列表

正则表达式对象:re.compile()

正则表达式修饰符-可选标志

特殊字符类

 

19        Python GGI编程

CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上

CGI架构:

Browser->Internet->Web Server

POST和GET方法:

GET方法发送编码后的用户信息到服务端,数据信息包含在请求页面的URL上,以"?"号分割,

url示例、表单示例、

使用POST方法向服务器传递数据是更安全可靠的,像一些敏感信息如用户密码等需要使用POST传输数据

传递checkbox数据、传递Radio数据、传递Textarea数据、传递下拉数据、

使用Cookie:

cookie 就是在客户访问脚本的同时,通过客户的浏览器,在客户硬盘上写入纪录数据 ,当下次客户访问脚本时取回数据信息,从而达到身份判别的功能,cookie 常用在身份校验中。

Set-cookie:name=name;expires=date;path=path;domain=domain;secure

Cookie信息检索

 

 

20        MySQL数据库

 

 

21        Python网络编程

服务器端和客户端之间的信息传递

Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。

Python Internet模块

 

22        SMTP发送邮件

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])

发送HTML格式的邮件

发送带附件的邮件

在HTML中添加图片

使用第三方SMTP服务发送

 

23         Python多线程

多线程类似于同时执行多个不同程序,Python中使用线程有两种方式:函数或者用类来包装线程对象。

函数式:调用thread模块中的start_new_thread()函数来产生新线程。

thread.start_new_thread ( function, args[, kwargs] )

线程模块同样提供了Thread类来处理线程,Thread类提供了以下方法:

run(),start(),join([time]),isAlive(),getName(),setName()

线程模块:

Python通过两个标准库thread和threading提供对线程的支持。

使用Threading模块创建线程,直接从threading.Thread继承,然后重写__init__方法和run方法:

线程同步:

使用Thread对象的Lock和Rlock可以实现简单的线程同步,这两个对象都有acquire方法和release方法

锁有两种状态——锁定和未锁定。

线程的优先级队列:

Python的Queue模块中提供了同步的、线程安全的队列类,包括FIFO……

 

24        Python XML解析

XML 指可扩展标记语言(eXtensible Markup Language)。 XML 被设计用来传输和存储数据

python有三种方法解析XML,SAX,DOM,以及ElementTree:

因DOM需要将XML数据映射到内存中的树,一是比较慢,二是比较耗内存,而SAX流式读取XML文件,比较快,占用内存少,但需要用户实现回调函数(handler)。

SAX是一种基于事件驱动的API。SAX解析XML文档牵涉到两个部分:解析器和事件处理器。

文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。

 

25        Python GUI编程(Tkinter)

常见的python GUI库:Tkinter,wxPython,Jython

Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库

tkinter编程,tkinter组件,标准属性,几何管理

 

26 Python2.x和3.x的区别

print()函数:

Unicode:在 Python 3,我们最终有了 Unicode (utf-8) 字符串,以及一个字节类:byte 和 bytearrays。

除法运算:

在python 3.x中/除法不再这么做了,对于整数之间的相除,结果也会是浮点数。

而对于//除法,这种除法叫做floor除法,会对除法的结果自动进行一个floor操作

异常:

捕获异常的语法由 except exc, var 改为 except exc as var。

xrange()

在 Python 3 中 xrange() 会抛出命名异常

八进制字面量表示:

八进制数必须写成0o777,原来的形式0777不能用了;二进制必须写成0b111

不等运算符:        

Python 3.x中去掉了<>, 只有!=一种写法

去掉了repr表达式“:

Python 3.x 中去掉了``这种写法,只允许使用repr函数

多个模块被改名:

数据类型改变:

Py3.X去除了long类型,现在只有一种整型——int,但它的行为就像2.X版本的long

新增了bytes类型,对应于2.X版本的八位串

str对象和bytes对象可以使用.encode() (str -> bytes) or .decode() (bytes -> str)方法相互转化

 

27        Python IDE

PyCharm

Sublime text

Eclipse+Pydev

 

 

28        Python Json

json.dumps        将 Python 对象编码成 JSON 字符串

json.loads        将已编码的 JSON 字符串解码为 Python 对象

 

 

 

 

 

 

---------Python开发小技巧----------------------------------------------------------------------------------

……  Python开发小技巧

python if not in 多条件判断代码:

all([True,False,True]) 结果为False,all函数测试迭代对象中是否所有条件都成立;

any([True,False,False]) 结果为True,any测试是否至少有一个条件成立

 

python文件操作

文件操作的三种模式:r(only-read),w(only-write),a(append)

f = open('file','r')   #有时为了避免乱码,需要加上encoding='UTF-8'

for line in f.readlines():

print(line)

line.strip()  #去掉空行

f2 = open('file2','w',encoding='utf8')  #写入的时候必须加utf8

tell():查询光标位置

seek():光标定位

flush():同步将数据从缓存转移到磁盘sys.stdout.flush()

truncate():截断 a模式下,截断指定位置后的内容

r+(读写模式),w+(写读模式,先清空原内容再写入),a+(追加读模式)

with语句with open('file','r') as f1,open('file2','w',encoding='utf8') as f2:

 

 

print()不输出空行

print(i,end = " ")

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.....

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值