Python函数及变量详解

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.在函数外定义的变量,可以在所有的函数中使用(全局变量)

上一篇:java 实现9*9乘法表


下一篇:Linux安装Tesseract-OCR识别