Python基础知识-Day4
一、函数关键字
关键字是Python内置的,具有特殊意义的标识符,自定义标识符命名时不可与之重复。可以通过以下代码查看Python内置的关键字内容。
import keyword
print(keyword.kwlist)
1
2
结果有[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
一共有33个关键字。
二、函数的定义
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
定义一个函数:可以定义一个任意功能的函数,以下是简单的规则:
1) 函数代码块以def关键词开头,后接函数标识符名称和圆括号()。
2) 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
3) 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
4) 函数内容以冒号起始,并且缩进。
5) return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
函数定义使用def关键字,一般格式如下:
def 函数名(参数列表):
函数体
三、函数参数与作用域
1.调用函数时可使用的正式参数类型:
a. 必需参数:
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。调用printme()函数,你必须传入一个参数,不然会出现语法错误。
b. 关键字参数:
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为Python解释器能够用参数名匹配参数值。以下实例在函数printme()调用时使用参数名。
c. 默认参数:
调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 age 参数,则使用默认值。
d. 不定长参数:
当需要一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数。和上述2种参数不同,声明时不会命名。基本语法如下:
def functionname([formal_args,] *var_args_tuple ):
“函数_文档字符串”
function_suite
return [expression]
2.作用域分类:
1)全局作用域:在整个程序运行环境中都可见。
2)局部作用域:在函数、类等内部可见,局部作用域中的变量成为局部变量,适用范围不能超过其所在的局部作用域。
四、函数返回值
1.函数返回值可以是任意的数据类型
2.如果有返回值:必须要用变量接收才会有效果
3.函数可以没有返回值,默认返回给None,函数的返回值为None有三种情况:
(1)不写返回值 (2)只写一个return(3)return None (几乎不用)
4.return的作用:结束一个函数的执行
5.函数的返回值不为None,有返回值返回一个值(一个变量),返回多个值(多个变量),多个值之间用逗号区分。
接收:可以用一个变量接收,以元组的形式返回。也可以用多个变量接收,返回几个就用几个变量去接收,相当于解压式接收。
五、File:
a. 打开文件方式(读写两种方式)
读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。
1.读文件:要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:
f = open(’/Users/michael/test.txt’, ‘r’)
r表示是文本文件,rb是二进制文件。(这个mode参数默认值就是r)
如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在
2. 写文件:
写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符’w’或者’wb’表示写文本文件或写二进制文件。
b. 文件对象的操作方法
open()方法:Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数。使用open()方法一定要保证关闭文件对象,即调用close()方法。
open()函数常用形式是接收两个参数:文件名(file)和模式(mode)。
open(file, mode=‘r’)
完整的语法格式为:
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明: file:必需,文件路径(相对或者绝对路径)。
mode:可选,文件打开模式
buffering:设置缓冲
encoding:一般使用
utf8 errors:报错级别
newline:区分换行符
closefd:传入的file参数类型
mode模式有:
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
打开一个文件进行更新(可读可写)。
U 通用换行模式(不推荐)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
c. 学习对excel及csv文件进行操作
(1) python读写csv文件
import csv
#读取csv文件内容方法1
csv_file = csv.reader(open(‘test.csv’,‘r’))
next(csv_file, None) #skip the headers
for user in csv_file:
print(user)
#读取csv文件内容方法2
with open(‘test.csv’, ‘r’) as csv_file:
reader = csv.reader(csv_file)
next(csv_file, None)
for user in reader:
print(user)
#从字典写入csv文件
dic = {‘a’:25, ‘b’:26}
csv_file = open(‘test1.csv’, ‘w’, newline=’’)
writer = csv.writer(csv_file)
for key in dic:
writer.writerow([key, dic[key]])
csv_file.close() #close CSV file
csv_file1 = csv.reader(open(‘test1.csv’,‘r’))
for user in csv_file1:
print(user)
(2)python读写excle文件
需要先用python pip命令安装xlrd,xlwt库
import xlrd, xlwt #xlwt只能写入xls文件
#读取xlsx文件内容
rows =[] #create an empty list to store rows
book = xlrd.open_workbook(‘testdata.xlsx’) #open the Excel spreadsheet as workbook
sheet = book.sheet_by_index(0) #get the first sheet
for user in range(1, sheet.nrows): #iterate 1 to maxrows
rows. append(list(sheet.row_values(user, 0, sheet.ncols))) #iterate through the sheet and get data from rows in list
print(rows)
#写入xls文件
rows1 = [[‘Name’, ‘Age’],[‘fengju’, ‘26’],[‘wuxia’, ‘25’]]
book1 = xlwt.Workbook() #create new book1 excle
sheet1 = book1.add_sheet(‘user’) #create new sheet
for i in range(0, 3):
for j in range(0, len(rows1[i])):
sheet1.write(i, j, rows1[i][j])
book1.save(‘testdata1.xls’) #sava as testdata1.xls
六、os模块
(1)os.sep:取代操作系统特定的路径分隔符
(2)os.name:指示你正在使用的工作平台。比如对于Windows,它是’nt’,而对于Linux/Unix用户,它是’posix’。
(3)os.getcwd:得到当前工作目录,即当前python脚本工作的目录路径。
(4)os.getenv()和os.putenv:分别用来读取和设置环境变量
(5)os.listdir():返回指定目录下的所有文件和目录名
(6)os.remove(file):删除一个文件
(7)os.stat(file):获得文件属性
(8)os.chmod(file):修改文件权限和时间戳
(9)os.mkdir(name):创建目录
(10)os.rmdir(name):删除目录
(11)os.removedirs(r“c:\python”):删除多个目录
(12)os.system():运行shell命令
(13)os.exit():终止当前进程
(14)os.linesep:给出当前平台的行终止符。例如,Windows使用’\r\n’,Linux使用’\n’而Mac使用’\r’
(15)os.path.split():返回一个路径的目录名和文件名
(16)os.path.isfile()和os.path.isdir()分别检验给出的路径是一个目录还是文件
(17)os.path.existe():检验给出的路径是否真的存在
(18)os.listdir(dirname):列出dirname下的目录和文件
(19)os.getcwd():获得当前工作目录
(20)os.curdir:返回当前目录(’.’)
(21)os.chdir(dirname):改变工作目录到dirname
(22)os.path.isdir(name):判断name是不是目录,不是目录就返回false
(23)os.path.isfile(name):判断name这个文件是否存在,不存在返回false
(24)os.path.exists(name):判断是否存在文件或目录name
(25)os.path.getsize(name):或得文件大小,如果name是目录返回0L
(26)os.path.abspath(name):获得绝对路径
(27)os.path.isabs():判断是否为绝对路径
(28)os.path.normpath(path):规范path字符串形式
(29)os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
(30)os.path.splitext():分离文件名和扩展名
(31)os.path.join(path,name):连接目录与文件名或目录
(32)os.path.basename(path):返回文件名
(33)os.path.dirname(path):返回文件路径
七、datetime模块
Python中提供了多个用于对日期和时间进行操作的内置模块:time模块、datetime模块和calendar模块。其中time模块是通过调用C库实现的,所以有些方法在某些平台上可能无法调用,但是其提供的大部分接口与C标准库time.h基本一致。time模块相比,datetime模块提供的接口更直观、易用,功能也更加强大。
datetime模块提供了处理日期和时间的类,既有简单的方式,又有复杂的方式。它虽然支持日期和时间算法,但其实现的重点是为输出格式化和操作提供高效的属性提取功能。
1.datetime模块中定义的类
datetime模块定义了以下几个类:
datetime.date:表示日期,常用的属性有:year, month和day
datetime.time:表示时间,常用属性有:hour, minute, second, microsecond
datetime.datetime:表示日期时间
datetime.timedelta:表示两个date、time、datetime实例之间的时间间隔,分辨率(最小单位)可达到微秒
datetime.tzinfo:时区相关信息对象的抽象基类。它们由datetime和time类使用,以提供自定义时间的而调整。
datetime.timezone:Python 3.2中新增的功能,实现tzinfo抽象基类的类,表示与UTC的固定偏移量
需要说明的是:这些类的对象都是不可变的。
2.datetime模块中定义的常量
datetime.MINYEAR:datetime.date或datetime.datetime对象所允许的年份的最小值,值为1
datetime.MAXYEAR:datetime.date或datetime.datetime对象所允许的年份的最大值,只为9999
3.对象方法和属性
d.year:年
d.month:月
d.day:日
d.replace(year[, month[, day]]):生成并返回一个新的日期对象,原日期对象不变
d.timetuple():返回日期对应的time.struct_time对象
d.toordinal():返回日期是是自 0001-01-01 开始的第多少天
d.weekday():返回日期是星期几,[0, 6],0表示星期一
d.isoweekday():返回日期是星期几,[1, 7], 1表示星期一
d.isocalendar():返回一个元组,格式为:(year, weekday, isoweekday)
d.isoformat():返回‘YYYY-MM-DD’格式的日期字符串
d.strftime(format):返回指定格式的日期字符串,与time模块的strftime(format, struct_time)功能相同
本资料仅为学习总结之用。
---------------------