由若干语句组成的语句块、函数名称、参数列表构成,具有独立功能的代码块称为函数
在结构化编程中,函数是对代码的最基本的封装,一般都是按照功能来封装,封装是为了可以开发程序可以重复使用,减少相同功能代码的冗余,提高编写代码的效率,代码更加简洁,可读性强。
def 函数名(): 代码块
代码实例:
# 函数的定义 def printof(): print("---------------------") print("人生苦短,我要学Python") print("---------------------") # 函数的调用 printof()
学习到这,相信你已经对函数的概念基本熟悉了,但不知道你有没有疑问这个疑问:我该怎么样将数据传递给函数呢?这就需要用到函数参数,通过参数来把数据传递给函数获取我们想要的结果
# 定义 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)
解决了如何将值传入函数中,但如何获得函数计算出来的结果呢,想要在函数把结果返回给调用者,需要在函数中使用return
代码示例:
# 有参函数的定义,并返回结果给调用者 def add(a,b): c = a + b return c # 调用有参函数并获取结果 # 方式一: print(add(3, 5)) # 方式二: #调用函数,顺便保存函数的返回值 result = add(3,5) #因为result已经保存了add的返回值,所以接下来就可以使用了 print(result)
可以,对于大多数语言,比如java,C++语言,是不可以,但Python可以
代码示例:
def add(a,b): c = a + b d = a*b return c,d c,d = add(3, 5) print(a,b)
def 函数名(): 执行语句
def 函数名(): 执行语句 return 需要返回的数值
注意:
def 函数名(形参列表): 执行语句
注意:
def 函数名(): 执行语句 return 需要返回的值
函数名([实参列表])
定义在函数内部的变量
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
小总结:
如果一个变量,既能在一个函数中使用,也能在其他的函数中使用,这样的变量就是 全局变量
# 定义一个全局变量 a = 100 # 定义两个函数 def test1(): print(a) def test2(): print(a)
当全局变量和局部变量同名,如何修改全局变量的值?
代码如下:
# 定义一个全局变量 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
小总结:
就近原则
**1.在一个函数中定义的变量,只能在本函数中用(局部变量)
2.在函数外定义的变量,可以在所有的函数中使用(全局变量)