一、函数格式
1.函数定义的通用格式
def 函数名(形式参数):
"""
此处可以加函数的说明文档...
:param: 解释参数
:return: 解释返回值
"""
函数体
return 返回值
2.函数调用的通用格式
注意: 程序的入口是main
if __name__ == '__main__':
变量接收返回值 = 函数名(实际参数)
二、函数的注意事项
1,函数必须先定义再调用
2,函数不调用不执行
3,函数每调用一次就执行一次
4,函数的参数跟return返回值根据需要确定要不要设置
5,定义时有形式参数,调用的时候必须录入实际参数
6,定义时有return返回值,调用时建议使用变量接收
7,定义时没有return返回值,默认返回None
8,定义时可以手动设置None,此操作没有意义
三、全局变量和局部变量区别
全局变量: 在函数内和函数外都可以访问的变量
局部变量: 只能在当前函数内访问的变量
注意: 如何在函数内真正的做到修改全局变量呢? 使用global关键字声明 举例: global 变量名
# 先定义函数
def show1():
# 局部变量只能在当前函数内部访问
a = 10
print(a)
print(b)
def show2():
# print(a) # NameError: name 'a' is not defined
print(b)
# main程序的入口
if __name__ == '__main__':
# 全局变量
b = 20
# 再调用函数
show1()
show2()
# 注意: 局部变量在函数外无法访问
# print(a) # NameError: name 'a' is not defined
# 注意: 全局变量在函数内外都能访问
print(b)
四、global关键字
# 先定义函数
def show1():
# 修改全局变量
# 注意: 如果在函数内通过 变量名=新值 方式修改全局变量,其实是修改失败的
# 本质是在当前函数内创建了一个和全局变量名字一样的局部变量而已
# 如何在函数内真正的做到修改全局变量呢? 使用global关键字声明
global a
a = 300
print(a)
def show2():
print(a)
if __name__ == '__main__':
# 全局变量
a = 200
# 再调用函数
show1()
show2()
print(a)
五、None和对应类型
# 定义时没有return 返回值,默认返回的None
def show1():
print('测试代码1...')
a = show1() # 先调用show函数,然后把默认的None赋值给a
print(a) # None
print(type(a))
# 当然定义时也可以手动返回None,此操作没有意义
def show2():
print('测试代码2...')
return None
b = show2() # 先调用show函数,然后把默认的None赋值给a
print(b) # None
print(type(b))
六、函数说明文档
# 需求: 同时计算10和20以及30和40的和
# 先定义函数
def get_sum(a, b):
"""
这是一个求两个数和的函数
:param a: 是一个整数
:param b: 是一个整数
:return: 返回值是两个数的和
"""
sum = a + b
return sum
# 再调用函数
# 注意: 调用的时候,鼠标悬停到函数名上就会看到说明文档内容
h1 = get_sum(10, 20)
print(h1)
七、函数嵌套调用
# 先定义函数
def show2():
print('------show2开始-------')
print('此处省略1w行代码...')
print('------show2结束-------')
def show1():
print('------show1开始-------')
show2()
print('------show1结束-------')
def show():
print('------show开始-------')
show2()
print('------show结束-------')
# 再调用函数
# 程序的入口是main
if __name__ == '__main__':
# print(__name__)
show1()