python基础(四)
学习目录
1)函数关键字
2)函数的定义
3)函数参数与作用域
4)函数返回值
5)file:打开文件方式(读写两种方式)、文件对象的操作方法、学习对excel及csv文件操作
6)os模块
7)datetime模块
1)函数关键字
2)函数的定义
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
def my_abs(x):
if x >= 0:
return x
else:
return -x
//调用:
print(my_abs(-99))
如果你已经把my_abs()的函数定义保存为abstest.py文件了,那么,可以在该文件的当前目录下启动Python解释器,用from abstest import my_abs来导入my_abs()函数,注意abstest是文件名(不含.py扩展名)
如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。return None可以简写为return。
空函数
如果想定义一个什么事也不做的空函数,可以用pass语句:
def nop():
pass
pass用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。
参数检查
当传入了不恰当的参数时,内置函数abs会检查出参数错误,而我们定义的my_abs没有参数检查
让我们修改一下自定义函数my_abs的定义,对参数类型做检查,只允许整数和浮点数类型的参数。数据类型检查可以用内置函数**isinstance()**实现:
def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x
3)函数参数与作用域
(1)参数:
Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,
还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。
1.位置参数:顾名思义,按位置参数定义,则调用的时候也是这个顺序,要是顺序变了,代表的含义也就变了。
def power(x, n):
2.默认参数
比如计算x的n次方的函数power(x,n),由于它经常计算x²,所以在定义函数时可写成:
def power(x, n=2): #注意此行就可
s = 1
while n > 0:
n = n - 1
s = s * x
return s
注意:
- 它简化了函数的调用,大部分调用符合默认参数,可省略不写。如调用power(5)时,相当于调用power(5, 2)。而对于n≠ 2的其他情况,就必须明确地传入n,比如power(5, 3)。
- 必选参数在前,默认参数在后
- 当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
- 还没完
(2)作用域
一个在def内的定义的变量能够在def内的代码使用,不能在函数的外部应用这样的变量名。
def之中的变量名与def之外的变量名并不冲突,一个在def之外被赋值的变量X与在这个def之中赋值的变量X是完全不同的变量。
1.函数的作用域
在任何情况下,变量的作用域总是由代码中被赋值的地方所决定与函数的调用完全没有关系,因此又被称为语义作用域。通常情况下变量可以在三个不同的地方分配,分别对应三种不同的作用域:1.如果一个变量在def内赋值它的作用域在这个函数内;2.如果一个变量在一个嵌套的def中被赋值,对于嵌套的函数来说是非本地的;3.如果在def之外赋值,它的作用域是文件全局的。
2.本地作用域与全局作用域
函数定义的是本地作用域,而模块定义的是全局作用域。两个作用域之间的关系:内嵌模块是全局作用域;全局作用域的范围仅限于单个文件;每次对函数的调用都相当于创建了一个本地作用域;赋值的变量名除非声明为全局变量或者非本地变量,否则均为本地变量;所有其他的变量名都可以归纳为本地(在def内部),全局变量(模块命名空间内部),内置变量(由python预定义的内置模块提供)。
3.LEGB原则(变量名解析机制)
LEGB:其中L:本地作用域;E:上一层结构中的lambda或def的本地作用域;G:全局作用域;B:内置作用域。
4)函数返回值
可以返回多个值
返回值是一个tuple! 但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。
5)file:打开文件方式(读写两种方式)、文件对象的操作方法、学习对excel及csv文件操作
1.Python文件打开方式open
open(name[,mode[buf]])
name:指定文件路径
mode:指定文件打开方式,’w’是写文件,已存在的同名文件会被清空,不存在则会创建一个;’r’是读取文件,不存在会报错;’a’是在文件尾部添加内容,不存在会创建文件,存在则直接在尾部进行添加;还有’wb’是写二进制文件;’rb’是读取二进制文件,比如图片之类的。
buf:用于设置读写文件的缓存buffering的大小
2.Python文件读取方式read/readline/readlines
read([size])
size:设置读取size个字节;默认不设置时,读取全部
readline([size])
读取一行
readlines([size])
读取完文件,返回一个“由每一行所组成的列表”,使用访问列表的方式来访问文件
3.Python文件写入方式write/writelines
write(str)
将字符串写入文件
writelines(sequence_of_strings)
equence_of_strings:字符串组成的列表
一次性写入多行到文件
4.文件对象的操作方法
f = open(‘test’,mode)