一、定义和调用函数
1. 定义函数
格式
functionname:函数名
parameterlist:参数。可以为空,可以为多个参数,用逗号隔开
comments:可选参数
functionbody:可选参数,语句体调用函数后要执行的功能代码
函数:系统函数、自定义函数
调用函数:
调用函数就是执行函数
系统函数、自定义函数都是用函数名来调用
pass空语句:不做任何事情,起到占位作用,可以用…来代替pass
自定义函数
num1、num2、str都是函数的参数,在函数体中,函数类似于变量
函数调用、调用函数
计算两个数相加
2. 参数和返回值
主调函数和被调用函数之间一般都有数据传递关系
参数:
形参:定义函数时,括号里的参数
实参:调用函数时,函数后面的参数
参数的作用是传递数据给函数使用
实参:
值传递:实参为不可变对象时,改变形参的值,实参值不变
引用传递:实参为可变对象时,改变形参的值,实参的值也会改变
位置参数(必备参数)
必须按照正确的顺序传递到函数中,即调用时数量和位置必须与定义的相同
关键字参数:使用形参的名字来输入参数的值,不需要与形参的的位置一致
例1:
参数传递
列表作为参数传递
这里在最后的一个输出会多一个号,可以优化
字典作为参数传递
可变参数(不定参数)
传入函数中的实际参数可以是0个、1个或多个
可变参数的两种形式:
*parameter——接受任意多个实际参数并将其放到一个元组中
**parameter——接受任意多个显示赋值的实际参数,并将其放到一个字典中
使用已存在的列表作为函数的可变参数,在列表名称前加
使用已存在的字典作为函数的可变参数,可在字典的名称前面加
返回值
作用:将函数处理的结果返回给调用它的程序
返回值不是必须的,如果没有return语句,默认返回None
返回值可以是任意类型,只要return得到执行,就会直接结束函数的执行
返回一个值,该值可以是任意类型
返回多个值,保存为一个元组
例:输出一个列表中的偶数
二、变量的作用域
作用域指程序代码能够访问该变量的区域,即变量的有效范围
局部变量:
在函数内部定义的变量,只能在函数内使用
只在函数运行时创建,运行之前、之后都不存在
全局变量:
在函数外定义的变量
函数内定义,但是用global关键字修饰后的变量
在定义后的任何地方都有效
如果全局变量和局部变量重名,函数体内只有局部变量有效
例:
三、匿名函数
python使用lambda来创建匿名函数
lambda是一个表达式,函数体比def简单
lambda的主体是表达式,不是代码块。仅能在lambda表达式中封装有限的逻辑
lambda函数拥有自己的命名空间,不能访问自有参数列表以外或全局命名空间里的参数
语法:
匿名函数主要应用在需要一个函数而不必去命名这个函数
lambda函数看似只能写一行,却不同于C或C++的内联函数
内联函数的目的是调用小函数时不占用栈内存从而增加运行效率
lambda优势:
更精简,省略定义普通函数的过程,适合写脚本
提高了代码可读性
替代比较抽象且调用次数不多的函数,简化命名
四、内置函数
1. 数值运算函数
2. 字符串处理函数
例:
数学运算函数
字符串处理函数
拓展:
通过指定分隔符对字符串进行切片
语法:
str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等
num – 分割次数。默认为 -1, 即分隔所有
如果第二个参数 num 有指定值,则分割为 num+1 个子字符串。
按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表
语法:
keepends – 在输出结果里是否去掉换行符
默认False,不包含换行符
True则保留换行符
将序列中的元素以指定的字符连接生成一个新的字符串
语法:
sequence – 要连接的元素序列
五、其他常用内置函数
1. help()
查看命令帮助手册
2. type()
查看变量类型
作业练习: 答案参考【https://urlify.cn/a6Vreq】
定义一个getMax( )函数,返回三个数(从键盘输入的整数)中的最大值
定义一个函数,判断输入的三个数字是否能够构成三角形的三条边
定义一个函数,求两个正整数的最小公倍数
编写函数,可以接收任意多个整数并输出其中的最大值和所有整数之和