前言 1。函数的定义与调用 2。函数的实参和形参的使用方法 3。了解函数的返回值 4。缺省参数的使用方法 一。函数的作用 在开发程序时,使用函数可以提高编写的效率以及代码的重复利用 函数使用包含2个步骤 1。定义函数封装独立的功能 2。调用函数执行函数的代码 二。函数的基本使用 1。函数的定义 定义函数的语法格式如下 def函数名(): 函数封装的代码 。。。。。。。。def函数名():函数内部封装的代码注意:1。函数名称的命名规则要符合标识符的命名规则2。def是英文define的缩写3。函数名要能够表达出封装代码的功能,方便后续调用 2。函数调用 函数名()定义了一个函数,名为hello,【定义函数时,代码不会被执行】defhello():print(helloworld)print(helloworld)print(helloworld)调用函数hello()hello() 三。函数的参数 函数的主要功能是封装代码 可以通过函数的参数,来实现函数代码的灵活性定义函数如下def函数名(参数1,参数2,,,,):函数内部封装代码调用函数如下函数名(参数1对应的值,参数2对应的值,,,,)注意:调用的时候和定义函数的时候,参数是一一对应的,即数量一样2个数求和defmysum(a,b):print(ab)mysum(10,20)3个数求和defmysum(a,b,c):print(abc)mysum(10,20,10) 函数形参和实参 形参:定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用 实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部调用的 如下图所示:其中变量a和b是形参,而10,20是实参defmysum(a,b):print(ab)mysum(10,20) 形参只能是变量,而实参可以常量,表达式,变量等defsum(a,b):print(ab)形参a,b只能是变量sum(10,20)实参可以是常量sum(1010,2020)实参可以是表达式x2y3sum(x,y)实参可以是变量 形参和实参的传递 1。如果形参的类型为数字或字符串,形参的值改变了实参的值不会改变!deftest(a):这里的a是形参,形参就是一个属于函数内部的局部变量a1print(a)a10定义一个全局变量atest(a)a10调用上方函数得到11print(a)全局变量a的值没有变化 2。如果形参的类型为列表,字典,集合形参的值改变会影响实参的值a〔1,2,3〕deftest(a):a〔0〕10print(a)显示全局变量a的值test(a)调用函数,print(a)〔1,2,3〕〔10,2,3〕 缺省参数:提供实参就使用实参的值,如果没有提供,则使用缺省值 定义函数时可以给参数指定一个默认值,具有默认值的参数叫缺省参数 1。单个缺省值deftest1(a,b10):print(a,b)test1(1)此处调用时没有写第二个参数,所以第二个参数采用缺省值10输出结果为:110 2。多个缺省值deftest1(a1,b10):print(a,b)test1()此处调用时没有写第二个参数,所以第二个参数采用缺省值10输出结果为:110 注意:deftest1(a1,b)错误X,不能把有缺省值地形参写在没有缺省值地形参在前面 四。函数的返回值 return的作用: 1。结束函数deftest(a):print(before)ifa0:return提前结束函数如果a0则提前结束函数,不打印afterprint(after)test(1) 2。返回值 (1)函数返回值,通过return返回给调用者一个值 (2)多个返回值可以使用逗号隔开deftest():print(ABC)returnpython,1,67。8stest()print(s) 不带表达式的return相当于返回nonedefx():return不带表达式的return相当于返回nonesx()print(s) 语法格式语法格式:def函数名(参数1,参数2,,,,):函数体return返回值列表 练习1:返回参数中的最大值defsum(a,b):ifab:returnaelse:returnbmaxsum(2,3)print(max) 练习2:定义一个函数,参数为a,b其中a代表开始范围,b代表结束范围,求这个范围内所有整数相加的和defx(a,b):sum0whileab:sumaa1returnsumprint(x(1,3)) 五。函数的嵌套调用 一个函数内部又调用了另外一个函数的情况deftest1():print(我是test1)deftest2():test1()test2()打印:我是test1 六。函数的局部变量和全局变量 局部变量只能在函数内部使用 全局变量是在函数外部定义的变量,所有的函数都可以使用这个变量 注意:不建议使用全局变量,可变范围大不好维护 局部变量deftest1():a1局部变量a只属于test1()函数print(a)deftest2():a2局部变量a只属于test2()函数print(a)test1()输出结果为:1test2()输出结果为:2 全局变量 一般定义在函数的上方a100deftest1():print(a)deftest2():print(a)test1() 全局变量和局部变量重名(这种情况下,局部变量会覆盖掉全局变量)a100deftest1():a1print(a)deftest2():print(a)test1()输出结果为1 七。global关键字 作用:可以在函数内部修改全局变量的值def函数()global全局变量名全局变量名值a100deftest1():globalaa8888print(a)test1()输出结果为8888 八。匿名函数 1。用lambda关键词创建小型匿名函数 2。不要写def定义函数 3。一行代码就定义一个函数 语法格式如下: lambda参数1,参数2。。。。。。:函数执行代码sumlambdaa,b:abxsum(3,6)print(x) 在lambda函数中可以使用if语句max(lambdaa,b:aifabelseb)(4,5)print(max)输出结果:5