Task4
python基础
1.函数关键字
Python定义函数时使用 def 关键字
2.函数的定义
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。可以自己定义一个函数。
--函数-封装了独立功能,可以直接调用
--函数名(参数)
以下是简单的定义规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
语法:
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]
案例:
#自定义函数
def function_name (str):
"打印传入的字符串"
print(str)
return(0);
#调用自定义函数
function_name("自定义函数")
function_name("调用自定义函数")
3.函数参数与作用域
函数参数:
必选参数
默认参数
可变参数
关键字参数
命名关键字参数
1)必选参数
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
def my_print(str):
print(str)
return
my_print() # 将会 throw TypeError,因为必选参数,必须传,若不传将会抛异常。
2)默认参数
调用函数时,如果没有传递参数,则会使用默认参数。需要注意,默认参数必须指向不可变对象。若指向为可变对象,将会导致问题。
def my_print(str, age = 18):
print('name: ', str)
print('age: ', age)
return
3)可变参数
一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数。
def my_print(arg1, *args):
print("输出:")
print(arg1)
print(args)
return
my_print(1, 2, 3, 4)
输出:
1
(2, 3, 4)
加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
4)关键字参数
关键字参数允许函数调用时参数的顺序与声明时不一致,Python 解释器能够用参数名匹配参数值。
def my_print(name, age):
print('姓名:', name)
print('年龄:', age)
my_print(age=18, name='小明')
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw) # kw会自动将多个参数,组装成 dict
person('小明', 18, sex='female', school='南山小学')
5)命名关键字参数
如果要限制关键字参数的名字,就可以用命名关键字参数。和关键字参数kw不同,命名关键字参数需要一个特殊分隔符,后面的参数被视为命名关键字参数。
def person(name, age, *, city, job):
print(name, age, city, job)
person('小明', 18, city='深圳', job='程序员')
6)多参数组合
def f1(a, b, c=0, *args, **kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
def f2(a, b, c=0, *, d, **kw):
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
作用域:
函数内是一个作用域,(一般情况)外面是访问不到的。当进入一个函数时,一个新的作用域就被创建了。函数内的x和外面的x不是一个x,x是不可变量。
函数里可以访问外面的变量
函数里不可以修改外部定义的变量
4.函数返回值
1)函数返回值可以是任意的数据类型
2)如果有返回值:必须要用变量接收才会有效果
3)函数可以没有返回值,默认返回给None
其中函数的返回值为None有三种情况:
不写返回值
只写一个return
return None (几乎不用)
4)return的作用:结束一个函数的执行
5)函数的返回值不为None,有返回值
返回一个值(一个变量)
返回多个值(多个变量),多个值之间用逗号区分
接收:可以用一个变量接收,以元组的形式返回
例:
def move(x, y):
return x, y
5.file
1)打开文件方式(读写两种方式)
f = open('./task4_3.py', 'r')
print(f.read())
f.close()
with open('./task4_4.py', 'a') as f:
f.write('tiancity')
2)文件对象的操作方法
file.open 关闭文件。关闭后文件不能再进行读写操作。
file.read([size] 从文件读取指定的字节数,如果未给定或为负则读取所有。
file.readline 读取整行,包括 “\n” 字符。
3)学习对excel及csv文件进行操作
excel 读操作
import xlrd
read
excel = xlrd.open_workbook('./user_info.xlsx')
sheet = excel.sheets()[0]
row = sheet.row_values(0)
读取excel文件工作表中第1个工作簿的第1行第2列的数据
excel = xlrd.open_workbook('./user_info.xlsx')
sheet = excel.sheets()[0]
cell = sheet.cell(0, 1)
print(cell, type(cell))
cellValue = sheet.cell(0, 1).value
print(cellValue, type(cellValue)
循环遍历
excel = xlrd.open_workbook('./user_info.xlsx')
sheet = excel.sheet_by_index(0)
for i in range(sheet.nrows):
print(sheet.row_values(i))
excel 写操作
import xlwt
write excel
excel = xlwt.Workbook()
sheet = excel.add_sheet("test1")
sheet.write(0, 1, 'tiancity')
excel.save('excel.xls')
6.os模块
`os.sep:取代操作系统特定的路径分隔符
os.name:指示你正在使用的工作平台。比如对于Windows,它是’nt’,而对于Linux/Unix用户,它是’posix’。
os.getcwd:得到当前工作目录,即当前python脚本工作的目录路径。
os.getenv()和os.putenv:分别用来读取和设置环境变量
os.listdir():返回指定目录下的所有文件和目录名
os.remove(file):删除一个文件
os.stat(file):获得文件属性
os.chmod(file):修改文件权限和时间戳
os.mkdir(name):创建目录
os.rmdir(name):删除目录
os.removedirs(r“c:\python”):删除多个目录
os.system():运行shell命令
os.exit():终止当前进程
os.linesep:给出当前平台的行终止符。例如,Windows使用’\r\n’,Linux使用’\n’而Mac使用’\r’
os.path.split():返回一个路径的目录名和文件名
os.path.isfile()和os.path.isdir()分别检验给出的路径是一个目录还是文件
os.path.existe():检验给出的路径是否真的存在
os.listdir(dirname):列出dirname下的目录和文件
os.getcwd():获得当前工作目录
os.curdir:返回当前目录(’.’)
os.chdir(dirname):改变工作目录到dirname
os.path.isdir(name):判断name是不是目录,不是目录就返回false
os.path.isfile(name):判断name这个文件是否存在,不存在返回false
os.path.exists(name):判断是否存在文件或目录name
os.path.getsize(name):或得文件大小,如果name是目录返回0L
os.path.abspath(name):获得绝对路径
os.path.isabs():判断是否为绝对路径
os.path.normpath(path):规范path字符串形式
os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
os.path.splitext():分离文件名和扩展名
os.path.join(path,name):连接目录与文件名或目录
os.path.basename(path):返回文件名
os.path.dirname(path):返回文件路径