一、Python简介
1.1 Python简介
Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言
- Python是一种解释性语言:这意味开发过程中没有了编译这个环节。类似PHP和Perl语言
- Python是交互语言:这意味着,你可以在一个Python提示符
>>>
后直接执行代码 - Python是面向对象语言:这意味着Python支持面向对象的风格或代码封装在对象的编程技术
1.2 Python的特点
1.2.1 优点
- 易于学习 :Python有相对较少的关键字,结构简单,和一个明确定义的语法,学起来更加简单
- 易于阅读:Python代码定义清晰
- 易于维护:Python的源代码是想到容易维护的
- 一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
- 互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
- 可移植性:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
- 可拓展:可以使用c或c++完成部分编译
- 数据库:Python提供所有主要的商业数据库的接口。
- GUI编程: Python支持GUI可以创建和移植到许多系统调用。
- 可嵌入:可以将Python嵌入到c/c++程序,让你的程序的用户获得
脚本化
的能力
1.2.2缺点
- 运行速度慢,但可以用c++改写关键部分,提高速度
- 国内市场较小
- 中文资料匮乏
- 构架选择太多
二、Python的变量类型
- Numbers(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
2.1 Numbers(数字)
- int(有符号整型)
- long(长整型,也可以代表8进制和16进制)
- float(浮点型)
- complex(复数)
2.2 Python 列表(List)
list = ['a',1,"2"]
list2 = [1,2,3]
print(list) # 输出完整列表
print(list[0]) # 输出列表的第一个元素
print(list[1:3]) # 输出第二个至第三个元素
print(list[2:]) # 输出从第三个开始至列表末尾的所有元素
print(list)*2 # 输出列表两次
print(list+list2) # 打印组合的列表
2.3 Python 元组
元组是另一个数据类型,类似于 List(列表)。
元组用 ()
标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')
print tuple # 输出完整元组
print tuple[0] # 输出元组的第一个元素
print tuple[1:3] # 输出第二个至第四个(不包含)的元素
print tuple[2:] # 输出从第三个开始至列表末尾的所有元素
print tinytuple * 2 # 输出元组两次
print tuple + tinytuple # 打印组合的元组
2.4 Python 字典(dictionary)
- 字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
- 两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
- 字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'runoob','code':6734, 'dept': 'sales'}
print dict['one'] # 输出键为'one' 的值
print dict[2] # 输出键为 2 的值
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值
三、Python 函数
3.1 定义一个函数
- 函数代码块以
def
关键词开头,后接函数标识符名称和圆括号()。 - 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的
return相当于返回 None。
def printme( str ):
"打印传入的字符串到标准显示设备上"
print str
return
3.2 不定长参数
加了星号(*)的变量名会存放所有未命名的变量参数。
def aa(*str):
print(str)
return
aa("aa",12,"w") # ("aa",12,"w")
3.3 匿名函数(lambda)
python 使用 lambda 来创建匿名函数。
- lambda只是一个表达式,函数体比def简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
- 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
sum = lambda num1,num2:num1+num2
print(sum(10,20)) # 30
四、Python 文件的I/O
4.1 打印到屏幕
最简单的输出方法是用print
语句
4.2 读取键盘输入
- raw_input
- input
4.1.1 raw_input
raw_input 在Python 2.x中,在Python 3.x不能使用,可用input替换
raw_input([prompt]) 函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符
str = raw_input("请输入:")
print("你输入的内容是"+str)
4.1.2 input
nput([prompt]) 函数和 raw_input([prompt]) 函数基本类似,但是 input 可以接收一个Python表达式作为输入,并将运算结果返回。
str = input("请输入:")
print("你输入的内容是"+str)
4.3 打开和关闭文件
4.3.1 open()
你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。
file object = open(file_name [, access_mode][, buffering])
# open完整语法格式
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
- file_name: 访问的文件名称的字符串值
- access_mode: 打开文件的模式: 只读,写入,追加等。这个参数是非强制的,默认为只读®
- buffering: 如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
- file: 必需,文件路径(相对或者绝对路径)。
- mode: 可选,文件打开模式
- buffering: 设置缓冲
- encoding: 一般使用utf8
- errors: 报错级别
- newline: 区分换行符
- closefd: 传入的file参数类型
- opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。
不同模式打开文件的完全列表:
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(不推荐)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
4.3.2 File对象的属性
属性 | 描述 |
---|---|
file.closed | 返回true如果文件已被关闭,否则返回false。 |
file.mode | 返回被打开文件的访问模式。 |
file.name | 返回文件的名称。 |
file.softspace | 如果用print输出后,必须跟一个空格符,则返回false。否则返回true。 |
4.4 文件的读写
file = open("aaa.txt","a") # 打开文件,只写入,指针在最后
file.write("\nhello") # 换行写入内容
file.close() # 关闭文件
file = open("aaa.txt","r+") # 打开文件,读写,文件指针将会放在文件的开头。
str = file.read()
print(str(10)) # 读取10个字符
file.close()
4.5 文件的重命名和删除文件
4.5.1 rename(old_name,nwe_name)
需要导入os库
import os
# 重命名文件test1.txt到test2.txt。
os.rename( "test1.txt", "test2.txt" )
4.5.2 remove()
你可以用remove()方法删除文件,需要提供要删除的文件名作为参数。
import os
# 删除一个已经存在的文件test2.txt
os.remove("test2.txt")
4.6 Python里的目录
4.6.1 mkdir()
可以使用os模块的mkdir()方法在当前目录下创建新的目录们。你需要提供一个包含了要创建的目录名称的参数。
import os
# 创建目录test
os.mkdir("test")
4.6.2 getcwd()
import os
# 给出当前的目录
str = os.getcwd()
print(str)
4.6.3 rmdir()
rmdir()方法删除目录,目录名称以参数传递。
在删除这个目录之前,它的所有内容应该先被清除。
import os
# 删除”/tmp/test”目录
os.rmdir( "/tmp/test" )