python任务四

Task4(2day)
1.函数关键字
python中一共含有32个关键字:‘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’
关键字-是Python内置的、具有特殊意义的表示符
使用时关键字后面不需要括号
2.函数的定义
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。可以自己定义一个函数。
函数-封装了独立功能,可以直接调用
函数名(参数)
函数创建
#自定义函数
def function_name (str):
“打印传入的字符串”
print(str)
return(0);
#调用自定义函数
function_name(“自定义函数”)
function_name(“调用自定义函数”)
3.函数参数与作用域
函数传递参数时的一些简要的关键点:
1)参数的传递是通过自动将对象赋值给本地变量名来实现的。所有的参数实际上都是通过指针进行传递的,作为参数被传递的对象从来不自动拷贝。
2)对于numbers,Strings,元祖这种不可改变值的类型,在函数内部的参数名的赋值不会影响调用者。原因就是这种类型会在改变值的时候,重新指向新地址,那么之前的对象执行地址值不会变,就等同于copy.(传递值就是传递指针的指向)
3)改变函数的可变对象参数的值会对调用者有影响。(直接在指向地址处修改值,不再重现创建新的地址作为指向)
匹配模型的大纲:
位置:从左至右进行匹配。
关键字参数:通过参数名进行匹配。(调用者可以定义哪一个函数接受这个值,通过在调用时使用参数的变量名,使用name=value这种语法。)
默认参数:为没有传入值的参数定义参数值。
可变参数:搜集任意多基于位置或关键字的参数。
可变参数解包:传递任意多的基于位置或关键字的参数。
Keyword-only参数:参数必须按照名称传递。(只存在于Python3.0中)
作用域
在一个Python程序只用变量名时,Python创建、改变或查找变量名都是在所谓的命名空间(一个保存变量名的地方)中进行的。也就是说,在代码中变量名被赋值的位置决定了这个变量名能被访问到的范围,也即决定了它存在于哪个命名空间中。

4.函数返回值
函数需要先定义后调用,函数体中 return 语句的结果就是返回值。如果一个函数没有 reutrn 语句,其实它有一个隐含的 return 语句,返回值是 None,类型也是 ‘NoneType’。
return 语句的作用:
结束函数调用、返回值
python任务四
函数体中 return 语句有指定返回值时返回的就是其值
python任务四
函数体中没有 return 语句时,函数运行结束会隐含返回一个 None 作为返回值,类型是 NoneType,与 return 、return None 等效,都是返回 None。

无论定义的是返回什么类型,return 只能返回单值,但值可以存在多个元素。
return [1,3,5] 是指返回一个列表,是一个列表对象,1,3,5 分别是这个列表的元素
return 1,3,5 看似返回多个值,隐式地被Python封装成了一个元祖返回。

内部函数不能被外部直接调用,会抛异常 NameError。

5.File
1)打开文件方式(读写两种方式)
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)

2)文件对象的操作方法
python任务四python任务四
3)学习对Excel及CSV文件进行操作
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

python读写csv文件

import csv
#读取csv文件内容方法1
csv_file = csv.reader(open(‘testdata.csv’,‘r’))
next(csv_file, None) #skip the headers
for user in csv_file:
print(user)

#读取csv文件内容方法2
with open(‘testdata.csv’, ‘r’) as csv_file:
reader = csv.reader(csv_file)
next(csv_file, None)
for user in reader:
print(user)

#从字典写入csv文件
dic = {‘fengju’:25, ‘wuxia’:26}
csv_file = open(‘testdata1.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(‘testdata1.csv’,‘r’))
for user in csv_file1:
print(user)
6.Os模块
#OS模块

#os模块就是对操作系统进行操作,使用该模块必须先导入模块:
import os

#getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹)
result = os.getcwd()
print(result)

#chdir()改变当前工作目录
os.chdir(’/home/sy’)
result = os.getcwd()
print(result)

open(‘02.txt’,‘w’)

#操作时如果书写完整的路径则不需要考虑默认工作目录的问题,按照实际书写路径操作
open(’/home/sy/下载/02.txt’,‘w’)

#listdir() 获取指定文件夹中所有内容的名称列表
result = os.listdir(’/home/sy’)
print(result)

#mkdir() 创建文件夹
#os.mkdir(‘girls’)
#os.mkdir(‘boys’,0o777)

#makedirs() 递归创建文件夹
#os.makedirs(’/home/sy/a/b/c/d’)

#rmdir() 删除空目录
#os.rmdir(‘girls’)

#removedirs 递归删除文件夹 必须都是空目录
#os.removedirs(’/home/sy/a/b/c/d’)

#rename() 文件或文件夹重命名
#os.rename(’/home/sy/a’,’/home/sy/alibaba’
#os.rename(‘02.txt’,‘002.txt’)

#stat() 获取文件或者文件夹的信息
#result = os.stat(’/home/sy/PycharmProject/Python3/10.27/01.py)
#print(result)

#system() 执行系统命令(危险函数)
#result = os.system(‘ls -al’) #获取隐藏文件
#print(result)
7.Datetime模块
datatime模块重新封装了time模块,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo。

1、date类

datetime.date(year, month, day)

静态方法和字段

date.max、date.min:date对象所能表示的最大、最小日期;
date.resolution:date对象表示日期的最小单位。这里是天。
date.today():返回一个表示当前本地日期的date对象;
date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;

d1 = date(2011,06,03)#date对象
d1.year、date.month、date.day:年、月、日;
d1.replace(year, month, day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)
d1.timetuple():返回日期对应的time.struct_time对象;
d1.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;
d1.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;
d1.isocalendar():返回格式如(year,month,day)的元组;
d1.isoformat():返回格式如’YYYY-MM-DD’的字符串;
d1.strftime(fmt):和time模块format相同。
datetime相当于date和time结合起来。
datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )

静态方法和字段
datetime.today():返回一个表示当前本地时间的datetime对象;
datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
datetime.utcnow():返回一个当前utc时间的datetime对象;#格林威治时间
datetime.fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;
datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;
datetime.combine(date, time):根据date和time,创建一个datetime对象;
datetime.strptime(date_string, format):将格式字符串转换为datetime对象;