1.函数的概念
由若干语句组成的语句块、函数名称、参数列表构成,具有独立功能的代码块称为函数
2.函数的作用
在结构化编程中,函数是对代码的最基本的封装,一般都是按照功能来封装,封装是为了可以开发程序可以重复使用,减少相同功能代码的冗余,提高编写代码的效率,代码更加简洁,可读性强。
3.函数的定义和调用
1.定义函数的格式:
def 函数名():
代码块
代码实例:
# 函数的定义
def printof():
print("---------------------")
print("人生苦短,我要学Python")
print("---------------------")
# 函数的调用
printof()
4.函数参数
学习到这,相信你已经对函数的概念基本熟悉了,但不知道你有没有疑问这个疑问:我该怎么样将数据传递给函数呢?这就需要用到函数参数,通过参数来把数据传递给函数获取我们想要的结果
1.定义带有参数函数和调用
# 定义
def 函数名(参数1,参数2):
代码块
# 调用
函数名(参数1,参数2)
代码示例:
# -*- codeing = utf-8 -*-
# @Time :2020/9/19 22:58
# @Author:qzp
# @File : demo3-1.py
# @Software: PyCharm
# 有参函数的定义
def add(a,b):
c = a + b
print(c)
# 调用有参函数
add(3, 5)
5.函数返回值
解决了如何将值传入函数中,但如何获得函数计算出来的结果呢,想要在函数把结果返回给调用者,需要在函数中使用return
代码示例:
# 有参函数的定义,并返回结果给调用者
def add(a,b):
c = a + b
return c
# 调用有参函数并获取结果
# 方式一:
print(add(3, 5))
# 方式二:
#调用函数,顺便保存函数的返回值
result = add(3,5)
#因为result已经保存了add的返回值,所以接下来就可以使用了
print(result)
6.思考一下,Python可不可以返回多个值?
可以,对于大多数语言,比如java,C++语言,是不可以,但Python可以
代码示例:
def add(a,b):
c = a + b
d = a*b
return c,d
c,d = add(3, 5)
print(a,b)
7.函数使用分类
1.自定义函数
i.无参无返回值
def 函数名():
执行语句
ii.无参有返回值
def 函数名():
执行语句
return 需要返回的数值
注意:
- 一个函数到底有没有返回值,就看有没有return,因为只有return才可以返回数据
- 函数中,可以有多个return语句,但是只要执行到一个return语句,那么就意味着这个函数的调用完成
iii.有参无返回值
def 函数名(形参列表):
执行语句
注意:
- 在调用函数时,如果需要把一些数据一起传递过去,被调用函数就需要用参数来接收
- 参数列表中变量的个数根据实际传递的数据的多少来确定
iv.有参有返回值
def 函数名():
执行语句
return 需要返回的值
2.调用函数
1.调用函数的方式:
函数名([实参列表])
- 调用有参函数时,实参的个数和先后顺序应该和定义函数中的要求一致,不可不对等和顺序有变动,否则结果会出问题
- 调用有返回值的函数,可以用一个变量来保存这个函数的计算结果
7.局部变量和全局变量
1.什么是局部变量
定义在函数内部的变量
def test1():
a = 200 # 局部变量
print("---------test1--修改前--a=%d"%a)
a = 300 # 局部变量可以修改值
print("---------test1--修改后--a=%d"%a)
def test2():
a = 400 # 局部变量,不同函数,局部变量名可以相同,互不影响
print("---------test2--a=%d"%a)
test1()
test2()
运行结果:
---------test1--修改前--a=200
---------test1--修改后--a=300
---------test2--a=400
小总结:
- 局部变量,就是在函数内部定义的变量
- 不同的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响
- 局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储,这就是它的作用
2.什么是全局变量?
如果一个变量,既能在一个函数中使用,也能在其他的函数中使用,这样的变量就是 全局变量
# 定义一个全局变量
a = 100
# 定义两个函数
def test1():
print(a)
def test2():
print(a)
3.全局变量和局部变量同名问题
当全局变量和局部变量同名,如何修改全局变量的值?
代码如下:
# 定义一个全局变量
a = 100
def test1():
a = 200 # 局部变量
print("---------test1--修改前--a=%d"%a)
a = 300 # 局部变量可以修改值
print("---------test1--修改后--a=%d"%a)
def test2():
a = 400 # 局部变量
print("---------test2--a=%d"%a)
test1()
test2()
运行结果:
---------test1--修改前--a=200
---------test1--修改后--a=300
---------test2--a=400
是不是感觉和局部变量中的示例结果一样,这就需要好好思考一下了?这两个变量到底问题出在哪里?
修改全局变量方法:使用global
在变量名前进行声明
代码如下:
# 定义一个全局变量
a = 100
def test1():
global a #变量名a被global修饰之后,就变成了全局变量
a = 600 # 修改全局变量的值
print("---------test1--修改全局变量值后--a=%d"%a)
a = 300 # 局部变量变为全局变量,再次修改了全局变量的值
print("---------test1--全局变量--a=%d"%a)
def test2():
a = 400 # 局部变量不变
print("---------test2--局部变量a=%d"%a)
def test3():
print('---全局变量---a=%d'%a)
test1()
test2()
test3()
运行结果:
---------test1--修改全局变量值后--a=600
---------test1--全局变量--a=300
---------test2--a=400
---全局变量---a=300
小总结:
- 在函数外边定义的变量叫做 全局变量
- 全局变量能够在所有的函数中进行访问如果在函数中修改全局变量,那么就需要使用 global 进行声明,否则出错
- 如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量的,小技巧**
就近原则
**
4.作用域
1.在一个函数中定义的变量,只能在本函数中用(局部变量)
2.在函数外定义的变量,可以在所有的函数中使用(全局变量)