Python https://download.csdn.net/download/qccz123456/10567723
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。
【中文编码】
Python文件中有中文编码时采用一下注释申明编码为utf-8:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
【标识符】
Python 中的标识符区分大小写。下划线开头的标识符具有特殊意义:
单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入;
双下划线开头的 __foo 代表类的私有成员;
双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。
【基本语法】
Python用“冒号+缩进”替代大括号,并可以使用斜杠( \)将一行的语句分为多行显示
使用引号( ' )、双引号( " )、三引号( ''' 或 """ ) 来表示字符串。
单行注释采用 # 开头。
【变量类型】
(1)Numbers(数字):不允许改变数据类型,长整型用大写"L"
(2)String(字符串):+ 是字符串连接,* 是重复操作, [头下标:尾下标] 截取子字符串
str = 'Hello World!' str[2:5] str * 2 str + "TEST"
(3)List(列表):用 [ ] 标识,列表中值的切割使用变量 [头下标:尾下标]
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
(4)Tuple(元组):用( )标识,不能二次赋值,是只读列表
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
(5)Dictionary(字典):用{ }标识,由键key和对应的值value组成
tinydict = {'name': 'john','code':6734, 'dept': 'sales'} tinydict['name']
【数据类型转换】
int(x [,base]),float(x),str(x),list(s),dict(d)
【运算符】
**表示求幂;//表示取整除;整数除整数,只能得出整数。
成员运算符in、not in,指定的值是否在序列(字符串、列表或元组)中:
list = [1, 2, 3, 4, 5 ] 2 in list
身份运算符is、is not,判断两个标识符是否引用自一个对象:
a = 20 b = 20 a is b
(is 是判断两个变量引用对象是否为同一个,== 是判断引用变量的值是否相等)
【条件语句】
if条件1:
执行语句1
elif 判断条件2:
执行语句2
elif 判断条件3:
执行语句3
else:
执行语句4
【循环语句】
(1)while 判断条件:
执行语句
(2)for iterating_var in sequence:
statements(s)
如:fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print '当前水果 :', fruits[index]
(3)for … else、while … else中else 中的语句会在循环正常执行完(即 for、while 不是通过 break 跳出而中断的)的情况下执行。
(4)break跳出当前循环;continue结束本次循环继续下次循环;pass占位符,空语句,不做任何事。
【字符串格式化】
print "My name is %s and weight is %d kg!" % ('Zara', 21)
"{0} {1}".format("hello", "world")
【时间与日历】
import time; # 引入time模块
ticks = time.time() #当前时间戳:1459994552.51
localtime = time.localtime(time.time()) #本地时间:年月日时分秒等
localtime = time.asctime( time.localtime(time.time()) ) # 格式化时间Thu Apr 7 10:05:21 2016
print time.strftime("%Y-%m-%d %H:%M", time.localtime()) #格式化日期2016-04-07 10:25
import calendar # 引入calendar 模块
【函数】
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]
参数传递:传递整数、字符串、元组为不可变对象;传递列表、字典为可变对象。
函数参数:
(1)必选参数:比须以正确的顺序、数量传入函数,和声明时的一样。
(2)默认参数:def printinfo( name, age = 35 ): XXX printinfo( name="miki" );
(3)不定长参数:星号变量存放未命名变量def printinfo( arg1, *vartuple ): XXX
(4)关键字参数:printme( str = "My string");
匿名函数:lambda [arg1 [,arg2,.....argn]]:expression
sum = lambda arg1, arg2: arg1 + arg2; sum( 10, 20 )
全局变量想作用于函数内,需在函数内的变量前加 global。
【模块】
模块是一个 Python 文件,以 .py 结尾。
导入模块:import module1[, ...],使用module.function调用模块中的函数。
导入模块中函数:from modname import name1[, ...]。
搜索路径sys.path :(1)当前目录(2)PYTHONPATH 下的每个目录(3)系统默认路径。
dir(modname)函数,返回模块内部排好序的函数字符串。
locals()函数,在函数内部调用返回的是所有能在该函数里访问的命名。
globals()函数,在函数内部调用返回的是所有在该函数里能访问的全局名字。
reload(module_name),重载模块,重新执行模块里顶层部分的代码。
包,即文件夹,包括模块及子包等,但必须存在 __init__.py 文件,文件可为空:
from package_runoob.runoob1 import runoob1
【文件IO】
输入:raw_input("\n\nPress the enter key to exit.") #更安全的读取一行
str = input("请输入:"); #更具功能性的读取一行
输出:print “hello” 默认输出有换行,若实现不换行需要在变量末尾加逗号。
文件:
file object = open(file_name [, access_mode][, buffering])
fileObject.close();
fileObject.write(string);
fileObject.read([count]);
fileObject.tell() #方法告诉你文件内的当前位置
fileObject.seek(offset [,from]) #方法改变当前文件的位置
文件属性:file.closed、file.mode、file.name、file.softspace
操作文件:
import os
os.rename(current_file_name, new_file_name)
os.mkdir("newdir")
os.chdir("newdir") #改变当前的目录
os.getcwd() #得到当前的工作目录
os.rmdir('dirname') #删除目录,所有内容应该先被清除
【异常和错误】
异常处理与断言。
- try:
<语句> #运行别的代码
except <异常名>:
<语句> #如果在try部份引发了'name'异常
except <异常名>,<数据>:
<语句> #如果引发了'name'异常,获得附加的数据
else:
<语句> #如果没有异常发生
- try:
<语句>
finally:
<语句> #退出try时总会执行
- raise语句自己触发异常:raise [Exception [, args [, traceback]]]
- 用户自定义异常,如下
class Networkerror(RuntimeError):
def __init__(self, arg):
self.args = arg
【面向对象】
class ClassName:
'类的帮助信息' #类文档字符串
aaa #定义类变量
def __init__(self, bbb): #初始化函数
self.xxx = bbb #定义实例变量
aaa = bbb #使用类变量
def __del__( self ): #析构函数
pass
def function(self, ccc): #类的方法中第一个参数必须是self
self.xxx = ccc #使用实例变量
self.???代表类的实例,self.class 则指向类。
Instantiation = ClassName(bbb) #创建类的对象
ClassName.__doc__ : 类的帮助信息
ClassName.__name__: 类名
ClassName.__module__: 定义类所在的模块
ClassName.__bases__ : 类的所有父类构成的元素
ClassName.__dict__ : 类的数据属性信息
判断对象类型:isinstance()、type()
获得一个对象的所有属性和方法:dir()
慎用以下函数访问对象属性:
getattr(obj, name[, default]) : 访问对象的属性
hasattr(obj,name) : 检查是否存在一个属性
setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性
delattr(obj, name) : 删除属性
继承:
class SubClassName (ParentClass1[, ParentClass2, ...]):
'Optional class documentation string'
class_suite
(1)继承中基类的构造不会被自动调用,需在其派生类的构造中专门调用。
(2)调用基类的方法需要加上基类的类名前缀,且需要带上self参数变量;调用普通函数时并不需要带上self参数。
(3)先在本类中查找调用的方法,找不到才去基类中找。
(4) issubclass() 判断一个类是另一个类的子类或者子孙类
isinstance(obj, Class) 判断obj是Class类或Class子类的实例对象
属性与方法的指定含义:
头尾双下划线__foo__:特列方法,类似 __init__() 。
单下划线_foo:protected 类型,不能用于 from module import *
双下划线__foo:private类型,只允许类本身进行访问。
【正则表达式】
import re
p = re.compile(pattern) #根据模式字符串和可选的标志参数生成正则表达式
result = re.match(pattern, string, flags=0) # 从字符串的起始位置匹配一个模式
result = re.search(pattern, string, flags=0) # 扫描整个字符串并返回第一个成功的匹配
result = re.sub(pattern, repl, string, count=0, flags=0) # 使用repl替换string中的匹配项
若无匹配的字符串则返回none
pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写等
repl:替换的字符串,也可为一个函数
count:模式匹配后替换的最大次数,默认 0 表示替换所有的匹配
result.groups():返回一个包含所有组号字符串的元组,从 1 到 所含的小组号
result.group(num=0):返回一个包含组号所对应值的元组