一、函数的定义与调用
①、函数定义过程中,代码并没有执行
②、如果要执行函数,需要调用函数
③、函数必须先定义,后调用
④、遇到return后,函数终止执行并返回,如果没有return,默认返回值为None,单独的return也是返回None
二、函数的参数介绍
①形式参数与实际参数
函数定义时使用的参数称为形式参数,如下,name、height、weight均为形式参数。调用函数时传递的参数均为实际参数,如下,‘大佬’、170、50均为实际参数
②位置参数与默认参数
均是涉及到函数定义过程使用的参数,位置参数在定义过程中未赋值,默认参数在定义过程中赋默认值,如下,name、height为位置参数,weight为默认参数,在函数调用过程中,如果默认参数位置不传值,将使用默认值,反之,将使用传递的参数。
函数传递的参数个数一定要跟函数定义的参数个数一致,否则报错。person('大佬'),程序报错,原因:函数定义时,定义了2个位置参数,而实际调用时,只传了1个位置参数,位置参数的个数对不上。 person('大佬', 170),程序正常运行,原因:weight为默认参数,调用时,不传weight值,将使用weight的默认值50
如果函数定义时既有位置参数,又有默认参数,位置参数必须在默认参数位置的前面,否则程序报错。如下,函数错误,因为b为默认参数,c为位置参数,那么,b应该在c的后面。
③关键字参数
关键字参数是指在函数调用过程中,带有变量名称,并且与函数定义时的变量名称一致的参数,使用关键字参数,不需要位置一一对应。add(1, c=5),打印结果为8,相当于a=1,b=2(使用默认值),c=5(关键字参数)
④可变参数
可变参数是指在函数定义过程中,用*标记的参数。可变参数可以接受多个实参(位置参数)。可变参数的数据类型为元祖。如下,1赋值给位置参数a, 2赋值给位置参数b, 剩下的位置参数被args接受并存储到一个元祖里面,args = (3, 4, 5, 6)
⑤带有关键字的可变参数
带有关键字的可变参数,用**标记,可以接受多个关键字参数,存储到一个字典里面,变量名称为键,变量值为值。如下,1将赋值给位置参数a, 2将赋值给位置参数b,关键字参数c = 3、d = 4、e = 5、f = 6被args变量接受,并组装成一个字典 args = {'c' : 3, 'd' : 4, 'e' : 5, 'f' : 6}
三、拆包
函数实际调用过程中,变量前用*标记,可以将列表list、元祖tuple拆包为位置参数,将字典dict拆包为关键字参数。
四、变量的作用域
变量根据作用域可分为全局变量和局部变量,全局变量是指文件里面顶格定义的变量,局部变量是指在函数体内定义的变量,如下:name是在文件中顶格定义,为全局变量,w是在函数体内定义,为局部变量。
局部作用域中可以获取到全局变量,但不允许改变全局变量,如果非要改变全局变量的值,必须引入global声明,当全局变量命名与局部变量命名一致时,局部作用域优先使用局部变量。如下所示。
全局作用域不能获取或修改局部变量的值,如下所示。
五、内置函数
python中一些比较常用的内置函数为:
print():打印到屏幕
input():接受用户输入的字符,数据类型为字符串型
type():获取变量的类型
len():获取变量元素的个数,如字符串、列表、元祖、字典、集合等的长度
str()、int()、float()、list()、tuple()、dict()、set()、bool():数据类型转换
min():取最小值,接受的参数可以有多个变量,或列表、或元祖,如min(1, 2, 4, 0, 5) 、min([1, 2, 4, 0, 5]) 、min((1, 2, 4, 0, 5))
max():取最大值,接受的参数可以有多个变量,或列表、或元祖,如max(1, 2, 4, 0, 5) 、max([1, 2, 4, 0, 5]) 、max((1, 2, 4, 0, 5))
sum():求和,接受的参数为列表或元祖,如sum([1, 2, 4, 0, 5])、sum((1, 2, 4, 0, 5))
enumerate():同时获取序列的索引和值,常用语for循环中,如 test_list = [0, 1, 2, 3],for i, v in enumerate(test_list)
range():生成一个等差整数序列,range(start, end, step),包头不包尾,以step为步长的整数序列,如果start省略,则默认从0开始,如果step省略,则默认步长为1
eval():去除代码字符串左右两侧的引号,如eval("4 + 8") = 12,eval("{'name' : '张三', 'sex' : '男'}") = {''name : '张三', 'sex' :' 男'}
zip():压缩,将2个可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表,如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,在pyhon3.中zip() 返回的是一个对象(引自菜鸟教程),如a = ['name', 'sex', 'age'],b = ['张三', '男', 18], dict(zip(a, b)) = {'name' : '张三', 'sex' : '女', 'age' : 18}
open():打开文件