Python数据类型与基本语句
Python数据类型 数字
Python中有四种类型的数字:整数、长整数、浮点数和复数.
类型 | 描述 |
整数 | 一般意义上的数,包括八进制、十六进制等 |
长整数 | 无限大小的数,在其结尾加上l或者L |
浮点数 | 小数或者用e(或E)表示的幂 |
复数 | 复数的虚部以字母J或j结尾 |
Python中使用数字无需事先声明其类型.
Python中的运算符:**是乘方运算符.
Python数据类型 字符串
Python中的字符串用于表示和存储文本, 通常有三种方式.由单引号、双引号和
三引号包围.其中三引号包围的字符串可以由多行组成.
常用字符串操作函数
函数 | 描述 |
string.capitalize() | 将字符串的第一个字母大写 |
string.count() | 获得字符串中某个子字符串的个数 |
string.find() | 获得字符串中某个子字符串的起始位置 |
string.isalnum() | 检测字符串是否仅包含0-9a-zA-Z |
string.isalpha() | 检测字符串是否仅包含0-9a-zA-Z |
string.isdigit() | 检测字符串是否仅包含数字 |
string.islower() | 检测字符串是否均为小写字母 |
string.isspace() | 检测字符串中所有字符是否均为空白字符 |
string.istitle() | 检测字符串中的单词是否为首字母大写 |
string.isupper() | 检测字符串是否均为大写字母 |
string.join() | 连接字符串 |
string.lower() | 将字符串中的字符全部转换为小写 |
string.split() | 分割字符串 |
string.swapcase() | 将字符串中大写字母转小写, 小写转大写 |
string.title() | 将字符串中的单词首字母大写 |
string.upper() | 将字符串中的字符全部转换为大写 |
Len(string) | 获取字符串的长度 |
以上函数并不改变字符串本身, 而是返回修改后的新的字符串.
string.join函数将原字符串插入到参数字符串中的每两个字符之间
如果参数字符串只有一个字符, 那么返回参数字符串.
string.split将字符串以指定的字符分割, 如果不指定字符, 默认以
空格分割.
split([sep] [,maxsplit])
sep:可选参数, 指定分割的字符.
maxsplit:可选参数, 分割次数.
索引和分片:Python中可以使用[]访问字符串中特定位置的字符,序号从0开始.
而且Python中允许以负数表示字符串的序号, 负数标示从字符串尾部开始计算,
此时最后一个字符的序号是-1.
格式化字符串:在字符串中使用以%开头的字符.常见的格式化字符有以下几个:
%c 单个字符
%d 十进制整数
%o 八进制整数
%s 字符串
%x 十六进制字符串
%X 十六进制字符串, 其中的字母大写
使用时在格式化字符串后加入 % 然后加入相应的值, 如果有多个格式化字符
后面的值用小括号括起来, 值用引号引起来.
字符串与数字相互转换
将完全由数字组成的字符串转换成整数:string.atoi(s [,base])
s:待转换的字符串
base:可选参数, 表示将字符串转换成的进制类型
将数字转换为字符串:str()函数.
原始字符串
原始字符串以R或r开头, 原始字符串中\不再表示转义字符的含义,可以用来
表示Windows系统下的路径,但结尾不能是\.
Python数据类型 列表和元组
列表是以方括号[]包围的数据集合, 不同成员之间用逗号分隔, 列表中可以包含
任何数据类型, 也可以包含另一个列表.列表可以通过序号访问其中的成员, 可以
对列表进行排序、添加、删除等操作, 改变列表中某个成员的值. 元组的特性与
列表基本相同, 元组是以圆括号()包围的数据集合. 与列表不同的是, 元组中的
数据一旦确定就不能被改变, 通常用于不希望数据被其他操作改变的场合.
列表常用操作
列表操作 | 描述 |
list.append() | 追加成员 |
list.count(x) | 计算列表中x出现的次数 |
list.extend(L) | 向列表中追加另一个列表L |
list.index(x) | 获得x在列表中的位置 |
list.insert() | 向列表中插入数据 |
list.pop() | 删除列表中的成员,参数为索引 |
list.remove() | 删除列表中的成员,参数为成员值 |
list.reverse() | 将列表中的成员顺序颠倒 |
list.sort() | 排序 |
Python数据类型 字典
字典是以大括号{}包围的数据集合, 字典是无序的, 在字典中通过键来访问成员
字典也是可变的, 字典中成员的位置没有实际的意义, 不能通过位置访问成员,
字典中的成员是以键:值的形式声明的.
字典常用操作
字典操作 | 描述 |
dic.clear() | 清空字典 |
dic.copy() | 复制字典 |
dic.get(k) | 获得键k的值 |
dic.has_key(k) | 是否包含键k |
dic.items() | 获得由键和值组成的列表 |
dic.keys() | 获得键的列表 |
dic.pop(k) | 删除键k |
dic.update() | 更新成员 |
dic.values() | 获取值的列表 |
Python数据类型 文件
文件也是Python的数据类型, 当使用open打开一个文件后返回一个文件对象.
open(filename [, mode] [, bufsize])
filename:要打开的文件名
mode:可选参数,文件打开模式
r:只读方式打开
w: 写方式打开
b: 以二进制方式打开
bufsize:可选参数, 缓冲区大小
常用文件操作
文件操作 | 描述 |
file.read() | 将整个文件读入字符串中 |
file.readline() | 读入文件的一行到字符串中 |
file.readlines() | 将整个文件按行读入列表中 |
file.write() | 向文件中写入字符串 |
file.writelines() | 向文件写入一个列表 |
file.close() | 关闭打开的文件 |
Python基本语句
if语句
if<condition>:
<statement>
elif <condition>:
<statement>
else:
<statement>
for语句
for<> in <object set>
if <condition>:
break
if <condition>:
continue
<other statement>
else:
<statement>
如果for循环没有被break中止, 则会执行else块中的语句.
while语句
while <condition>:
if <condition>:
break
if <condition>:
continue
<other statement>
else:
<statement>
函数声明
在Python中,使用def声明一个函数, 函数在使用前必须声明.完整的函数名由
函数名、参数、函数实现组成, 函数声明的一般形式如下:
def <function name>(argument list):
<statement>
return <return value>
其中参数和返回值不是必须的.
Python中声明一个函数不必声明函数的类型, 也不需要声明参数类型.
函数调用
函数调用必须在函数声明之后.
参数的默认值
在Python中可以在声明函数的时候, 为参数设置一个默认值.若调用具有默认值
的函数时没有传递参数, 那么就会使用声明函数时设置的默认值.
声明一个有默认值参数的函数的形式:
def <function name>(argument=value):
<statement>
如果一个函数有多个参数, 这些参数都有默认值那么要在调用时指定某个参数的值
要用下面的声明方式:
def fun(x=None, y=None, z=None):
if x == None:
x = 1
if y == None:
y = 2
if z == None:
z = 3
return x + y + z
调用时使用如下形式fun(None, None, 5).
参数传递
在Python中参数值的传递是按照声明的时候参数的顺序进行传递的.还可以用
按照参数名传递值的方法.例如:
def fun(x, y, z)
return x + y + z
可以这样进行调用
fun(z = 1, x = 2, y = 3)
可变长参数
在Python中声明一个可变长参数的函数只需以*开头定义一个参数即可
def <function name>(*argument):
<statement>
参数引用
Python中可以在参数中使用可变对象, 如列表等, 来达到改变参数值的目的.
在Python中有三种作用域:内置作用域(Python预先定义好的)、全局作用域
(所编写的整个脚本)、局部作用域(函数内部的范围).如果要在函数内使用函数外
的变量, 可以在变量名前加global关键字.
Lambda表达式
lambda表达式是Python中一种比较特殊的声明函数的方式, 可以声明一个匿名
函数.lambda声明函数的一般形式:
lambda argumentlist : expression
lambda适用于定义小型函数, 且函数中仅包含单一的参数表达式, 而不能包含
其他语句, 也可以调用其他函数.
概述
在Python中可以通过导入模块, 然后使用模块中提供的函数或者数据.
导入模块或者模块中的函数:
1. importmodule_name
2. importmodule_name as new_name
3. from module_name import function_name
使用import是将整个模块导入, 而使用from则只导入某一个模块中的函数
或者名字.另外使用import导入模块时, 要使用模块的函, 则必须以模块名
加上.然后是函数名的形式调用, 而使用from导入模块中的函数则可以直接
使用模块中的函数名进行调用.
模块查找路径
Python解释器首先在当前目录查找导入的模块, 如果没有找到, 则去sys模块
中的path变量指定的目录查找导入模块, 如果都没找到, 则会出错.
在脚本中可以向sys.path添加模块查找路径, 如:
sys.path.append(module_path).
模块编译
对于模块, Python会在第一次调用的时候将其编译成字节码的形式, 以
提供脚本的启动速度. 如果不想发布源代码, 可以使用py_compile模块
的函数将脚本编译为字节码的形式.
import py_compile
py_compile.compile(module_name)
模块独立运行_name_属性
可以根据_name_属性判断脚本是作为模块运行还是独立运行, 如果是作为模块
运行则_name_的值为模块名, 如果是独立运行则_name_被设置为_main_.
包可以看出是处于同一目录的模块, 要先使用目录名再使用模块名导入所需的包
在包的每个目录中都必须有一个_init_.py的文件(可以是空文件)._init_.py
的主要作用是设置_all_变量以及包含初始化所需要的代码, 对于在导入包内所有
名字时在from中使用*通配符的情形, 设置_all_变量可以保证名字的正确导入.
类的定义
类定义使用关键字class, 使用类之前必须先定义类, 类定义一般放在脚本的
开始部分.Python中, 甚至可以在if语句的分支中或者函数中定义类.
类定义的形式如下:
class <class_name>:
statement
······
类还可以通过继承的方式获得:
class <class_name>(base_class_name):
statement
······
类的使用
类在定义后必须实例化才能使用, 类的实例化与函数调用类似, 只要使用类名加上
圆括号就可以实例化一个类.
当创建一个类以后就可以通过类名访问其属性, 如果直接用类名修改属性, 那么将
影响已经实例化的类.
类的属性
Python中通过类中属性的命名方式来表示类属性是共有还是私有的,
如果类中的属性是以一条下划线开始的话, 则该属性为类的私有属性.
不能在类外部使用, 在类内使用时需要用self.加到私有属性前面.
类的方法
类的方法就是在类内部使用def定义的函数, 但类的方法必须包含一个参数
self并且这个参数必须是第一个参数.
与类的属性相同, 如果类的方法是以一条下划线开头, 则它是类的私有方法.
在类内部调用其私有方法要使用self.加方法名的形式.
类的专有方法
方法名 | 描述 |
_init_ | 构造函数, 生成对象时调用 |
_del_ | 析构函数, 释放对象时调用 |
_add_ | 加运算 |
_sub_ | 减运算 |
_mul_ | 乘运算 |
_div_ | 除运算 |
_mod_ | 取余运算 |
_pow_ | 乘方运算 |
_cmp_ | 比较运算 |
_repr_ | 打印、转换 |
_setitem_ | 按照索引赋值 |
_getitem_ | 按照索引获得值 |
_len_ | 获得长度 |
_call_ | 函数调用 |
通过继承创建类
通过继承创建类, 新类可以获得父类的共有属性和方法.
如果在定义类时使用父类的私有属性或方法将会出错.
多重继承
多重继承时, 类后面的圆括号内包含多个父类名, 父类名之间用逗号分隔,
使用多继承时需要注意父类类名的顺序, 如果父类中有相同的方法名, 在调用
时也没有指定父类名, 那么将从左到右搜索.在多个父类中有重名时,如果需要
使用不是前面父类的方法名.按照下面的方法进行调用.
如class C(A, B):
fun = B.fun
c = C()
c.fun()
方法重载
方法重载实际上就是在子类中使用def关键字重载父类的方法.如果重载父类的
方法时又要先使用父类的该方法, 那么可以使用父类名加.加方法名的形式调用.
重载_init_方法时要注意不要忘记调用父类的_init_方法.
运算符重载
重新定义类的与运算符相对应的专有方法名.
类也可以写到模块中, 在其他脚本中可以通过导入模块名使用定义的类.
使用try语句
在Python中可以使用try语句来处理异常, try语句还带有一个可选的
else子句, 如果异常未触发, 则执行else子句的内容.
try语句的一般使用形式:
try: try:
<statement> <statement>
except <excetpion1>: finally:
<statement> <statement>
except <excetpion2>:
<statement>
else:
<statement>
不管try语句是否发生异常, 都将执行finally语句块.
处理异常
except子句可以捕获指定的异常, 还可以捕获异常的附加数据.
Python中常见的内置异常
异常名 | 描述 |
AttributeError | 调用不存在的方法引发的异常 |
EOFError | 遇到文件末尾引发的异常 |
ImportError | 导入模块出差引发的异常 |
IndexError | 列表越界访问引发的异常 |
IOError | IO操作引发的异常 |
KeyError | 使用字典中不存在的关键字引发的异常 |
NameError | 使用不存在的变量名引发的异常 |
TabError | 语句块缩进不正确引发的异常 |
ValueError | 搜索列表中不存在的值引发的异常 |
ZeroDivisionError | 除数为0引发的异常 |
except子句的几种用法
except:
捕获所有异常
except <exception_name>:
捕获指定异常
except <exception1, exception2>:
捕获异常1或异常2
except <exception_name>, <data>:
捕获指定异常及其附加数据
多重异常处理
Python中可以在一个try子句中嵌套另一个try子句, Python把try放到堆栈
中, 一旦引发异常, Python将匹配最近的except子句, 如果except能够处理异常
则外围except子句将不会捕获异常, 如果except忽略该异常, 则异常将被外围
try子句捕获.
使用raise引发异常
raise引发异常的形式:
raise异常名
raise异常名, 附加数据
raise类名
assert简化的raise语句
assert是在条件为假时引发异常
assert<condition>, <data>
assert语句一般用于开发时对程序条件的验证, 只有当内置_debug_为True时
assert语句才有效, 当脚本以-O选项编译为字节码时,assert语句将被移除.
自定义异常
可以通过继承Exception类来创建自己的异常类.一般仅在异常类中定义几个属性
信息.
本文档主要是Python的基础语法知识用于备忘, 内容部分或全部
来自于《征服Python----语言基础与典型应用》孙广磊编著,
如转载请注明出处,我只是摘录了自己需要的内容, 不保证
内容的完整性,对于有其他面向对象语言编程经验的人应该
都能理解,但对于没有一点编程经验的人, 最好的学习方法
就是系统地研究一本书, 边看边练.
本文的电子档下载地址
http://download.csdn.net/detail/liuyanggofurther/4918112
文档中第六页for和while语句处各漏掉了一个冒号.