一、函数概述
函数也叫方法,可以用function(函数,功能),method(方法)来表示。函数是把具有独立功能的代码封装到一起,使其成为具有独立功能的代码集。
它的好处:1.提高代码的复用性;2.模块化编程。
1.1 定义格式
def 函数名(形式参数1,形式参数2...):
函数体,就是逻辑代码,if,for...
return 返回值
1.2 格式解释
def
defined缩写,表示:定义1个函数
函数名
方便我们调用函数,起名时最好见名知义 get_max() get_sum()
形式参数
简称形参,形容调用函数需要传入什么值.
函数体
表示该函数要完成什么功能,就是逻辑代码 if for
return
作用1.结束函数 作用2.可以返回函数的执行结果
1.3 调用格式
1)写函数名();
2)传参 这里写的是实参(实际参数),表示:实际参与运算的数据;
3)接收返回值,如果有的话。
1.4 细节
1)函数必须先定义,后使用;
2)函数只有被调用,才会执行。
eg1.
def call():
print('------拨号------')
print('(拨号方)手机发送信号包到 就近的基站')
print('(拨号方)就近的基站 解析信号包,然后通过地下电缆 发送信号包到 就近的基站')
print('(接收方)就近的基站 发送信号包 到 (接收方) 手机')
print('(接收方)手机解析信号包...')
print('(接收方)盲音等待...')
#具体的打电话动作
call()
call()
运行结果:
二、函数的说明文档
函数的说明文档可以理解为函数的注释,帮助程序员快速认识函数的作用。
格式:在函数的第一行,直接用三引号包裹即可。
help(函数名)可以快速查看函数的说明文档
def get_sum2(a,b):
'''
自定义函数,求和
:param a:需要求和的第一个数字
:param b:需要求和的第二个数字
:return:返回求和的结果
'''
return a+b
help(get_sum2)
运行结果:
三、函数的参数介绍
函数根据 参数 和 返回值 不同,主要分为如下的四种写法:
1)无参无返回值;
2)无参有返回值
3)有参无返回值;
4)有参有返回值。
定义函数的时候,写的参数列表,叫:形参;
调用函数的时候,写的参数列表,叫:实参;
函数只有被调用时,才会执行。
eg2.
def get_sum1():
a=10
b=5
print(a+b)
return #方法的最后一行,默认都有1个return,表示结束方法,并默认返回None
#2.无参有返回值
def get_sum2():
a=10
b=5
return a+b
#3.有参无返回值
def get_sum3(a,b):
print(a+b)
#4.有参有返回值
def get_sum4(a,b):
return a+b
四、变量的作用域
变量的作用域是指变量的作用范围,即:变量在哪里能用,哪里不能用。
根据变量的作用范围不同,分为局部变量和全局变量。
局部变量:
1.定义到函数的形参列表或函数内部的变量;
2.只能在函数内部使用,出了函数就无法使用;
3.生命周期:随着函数的调用存在,函数的调用完毕就消失。
全局变量:
1.定义到函数外部的变量或者global修饰的变量;
2.在当前模块中的函数,都可以使用.
3.生命周期:随着模块的加载而存在,模块的卸载而消失。
global关键字介绍:
作用/概述:
被它修饰的变量->全局变量,可以实现,定义 函数内的变量,在函数外使用。
eg3.
#演示局部变量
def myfun():
a=10
return a
myfun()
print(f'a={a}')
运行结果:
运行结果会报错,原因是a是局部变量,只能在函数内部使用,函数调用完毕之后就会消失。
eg4.演示全局变量
#演示全局变量
a=10
def myfun():
return a
myfun()
print(f'a={a}')
运行结果:

此时不会报错,因为a是全局变量,当前模块的函数都可以使用。
eg5.演示全局变量,global关键字修饰
a=10
def myfun():
global a
a=20
return a
myfun()
print(f'a={a}')
运行结果:
补充细节:使用变量遵循就近原则,局部位置有就用,没有就去当前脚本的全局位置去找,有就用,没有就报错(不严谨,对于面向对象的程序设计,会从对象的父类中去找)。
eg6.
a=20
def myfun():
a=10
return a
result=myfun()
print(f'result={result}')