注:本笔记来自B站黑马程序员的Python课程
第六节:函数
第一节:Python介绍
第二节:pycharm的基本使用
第三节:基础语法
第四节:分支语句
文章目录
一、函数
1、概念
函数是将具有独立功能的代码块组织成为一个整体,使其具有特殊的功能的代码集。
2、作用
使用函数可以加强代码的复用性,提高程序编写的效率。
二、函数定义
1、函数的使用
函数必须先创建才可以使用,该过程称为函数定义,函数创建后可以使用,使用过程称为函数调用。
定义格式一:
def 函数名():
函数体
……
调用格式一:
函数名()
调用格式一:
函数名()
例如:
def say():
print("hello world")
print("hello python")
say()
2、定义规则
函数必须先定义,后调用,否则程序将报错。
3、调用规则
函数定义部分的代码仅用于声明函数,调用时才实际执行函数内容。
三、函数调用过程分析
print("开始")
def say():
print("1")
print("2")
print("小结")
say()
print("函数第一次执行完毕")
say()
say()
print("结束")
四、文档注释
1、文档注释
文档注释可以为函数添加功能说明,方便开发者查阅函数相关信息
2、例如
"""
演示文档注释使用
"""
def say_hello():
"""打印hello python"""
print("hello world")
def sum_1_100():
"""用于计算1到100的和"""
i = 1
sum = 0
while i <= 100:
sum += i
i += 1
print(sum)
say_hello() #按住Ctrl然后放到这里就能看到它的注释
sum_1_100() #按住Ctrl然后放到这里就能看到它的注释
五、函数定义—参数
定义格式二:
def 函数名(参数):
函数体
……
调用格式二:
函数名(参数)
例如(单个函数)
def sums(a):
"""用于计算1到指定数字的和"""
i = 1
sums = 0
while i <= a:
sums += i
i += 1
print(sums)
sum(10)
例如(多个函数)
def add(a,b):
print(a+b)
add(3,4)
六、形参与实参
1、形参
形参是函数定义时规定的函数,仅在函数体内有效
2、实参
实参是函数调用时使用的参数,该值将传递给函数
3、注意
调用函数时,实参的数量必须与形参的数量一一对应,否则将报错
七、完成“最大值”函数程序
1、要求
任意给出两个数字,可以打印最大的数字值
2、思考
- 选用何种函数的定义格式?
- 是否具有参数?如果有设置几个参数?
- 得到最大值后做什么事情?
3、分析
- 函数必须使用带参数的定义格式,两个参数 def(2个参数)
- 作比较,求出最大的值
- 打印最大的值
4、代码
def dx(a,b):
if a > b:
print(a) #如果a>b成立,输出a
else :
print(b) #否则,输出b
dx(3,2)
八、作用域
1、参数的作用域
(1)函数定义的参数(形参)从定义位置开始到定义结束位置有效
(2)函数间不能共享参数(形参)
(3)例如
def max2 (num1, num2):
if num1 > num2:
print("%d和%d中的较大的数字是%d"% (num1,num2,num1))
else:
print("%d和%d中的较大的数字是%d"% (num1, num2, num2))
def min2(num1, num2):
if num1 < num2:
print("%d和%d中的较小的数字是%d" % (num1, num2, num1))
else:
print("%d和%d中的较小的数字是%d" % (num1, num2, num1))
max2(1,2)
min2(3,4)
2、变量的作用域
(1)局部变量
函数内部定义的变量从定义位置开始到函数定义结束位置有效
(2)全局变量
函数外部定义的变量在整个文件中有效
(3)注意
①函数间不能共享内部定义的变量,函数内部定义的变量只在函数内部有效
例如(反例)
def max2 (num1, num2):
a = 10
print(b)
if num1 > num2:
print("%d和%d中的较大的数字是%d"% (num1,num2,num1))
else:
print("%d和%d中的较大的数字是%d"% (num1, num2, num2))
def min2(num1, num2):
b = 20
print(a)
if num1 < num2:
print("%d和%d中的较小的数字是%d" % (num1, num2, num1))
else:
print("%d和%d中的较小的数字是%d" % (num1, num2, num1))
max2(1,2)
min2(3,4)
②函数间可以共享全局定义的变量,函数全局定义的变量在函数全局有效
例如
def max2 (num1, num2):
print(b)
if num1 > num2:
print("%d和%d中的较大的数字是%d"% (num1,num2,num1))
else:
print("%d和%d中的较大的数字是%d"% (num1, num2, num2))
def min2(num1, num2):
print(a)
if num1 < num2:
print("%d和%d中的较小的数字是%d"% (num1,num2,num1))
else:
print("%d和%d中的较小的数字是%d" % (num1, num2, num1))
a = 20
b = 30
max2(1,2)
min2(3,4)
3、全局变量与局部变量的冲突
如果局部变量与全局变量冲突,通过global关键字可以提升局部变量为全局变量,先声明再使用
(1)语法格式
global 变量名
(2)不加global函数,优先使用局部变量
例如
def test():
x = 10
print(x)
x = 20
test()
print(x)
(3)加入global函数,优先使用全局变量
例如
def test():
global x
x = 10
print(x)
x = 20
test()
print(x)
九、返回值
定义格式三
def 函数名(参数列表):
函数体
return 函数运行结果返回值
调用格式三
变量名 = 函数名(参数列表)
例如:
def add(a,b):
return a + b
def div(a,b):
return a / b
c = add(1000,2000)
print(c)
d = div(c,2)
print(d)
(1)使用变量接收不存在返回值的函数,结果为None;
(2)同一个函数执行过程中只能执行一次return语句,执行return语句后,return后面的内容将不再执行,函数执行完毕;
(3)同一个函数可以返回多个返回值,使用对应数量的变量接收即可。
例如:
def mul():
return 3, 4, 5
x,y,z = mul()
print(x)
print(y)
print(z)
十、函数间调用
1、概念
在一个函数中调用另一个函数的过程称为函数间调用
2、例如
def add(a,b):
return a + b
def div(a, b):
return a / b
def get(a, b):
#先计算和
c = add(a,b)
#再计算平均值
d = div(c,2)
return d
x = get(1000,2000)
print(x)
十一、基于最大值完成“三个数字求最大值”函数
1、要求
任意给出三个数字,可以得到最大的数字值
2、思考
- 选用何种函数的定义格式?
- 是否具有参数?如果有设置几个参数?
- 得到最大值后做什么事情?
- 是否具有返回值?如果有返回什么?
3、分析
- 两个函数,一个是求两个数字的最大值,还有一个是求三个数字的最大值
- 三个数字的最大值函数调用两个数字最大值函数来完成任务
- 最终结果要使用return返回
# 分析
# 1、两个函数,一个是求两个数字的最大值,还有一个是求三个数字的最大值
# 2、三个数字的最大值函数调用两个数字最大值函数来完成任务
# 3、最终结果要使用return返回
# 两个数字求最大值
def dx2(a,b):
if a > b:
return a #如果a>b成立,返回a
else :
return b #否则,返回b
def dx3(a,b,c):
#先使用两个数字求出最大值
x = dx2(a,b)
#使用得到的结果再与第三个数字一起求最大值
y = dx2(x,c)
return y
m = dx3(1,3,5)
print(m)