练习21--函数可以返回一些东西

一 函数返回值

1 定义:所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果

2 语法:使用return语句可以结束函数调用,并将运算结果返回

  • 函数体中 return 语句有指定返回值时返回的就是其值
  • 函数体中没有 return 语句时,函数运行结束会隐含返回一个 None 作为返回值,类型是 NoneType,与 return 、return None 等效,都是返回 None。
  • 一个函数可以存在多条 return 语句,但只有一条可以被执行,如果没有一条 reutrn 语句被执行,同样会隐式调用 return None 作为返回值
  • 如果函数执行了 return 语句,函数会立刻返回,结束调用,return 之后的其它语句都不会被执行了

3 返回值类型

  • 无论定义的是返回什么类型,return 只能返回单值,但值可以存在多个元素。
  • return [1,3,5] 是指返回一个列表,是一个列表对象,1,3,5 分别是这个列表的元素
  • return 1,3,5 看似返回多个值,隐式地被Python封装成了一个元组返回

4 函数分类

  • 无参数,无返回值:此类函数,不能接收参数,也没有返回值,一般情况下,打印提示灯类似的功能,使用这类的函数
  • 无参数,有返回值:此类函数,不能接收参数,但是可以返回某个数据,一般情况下,像采集数据,用此类函数
  • 有参数,无返回值:此类函数,能接收参数,但不可以返回数据,一般情况下,对某些变量设置数据而不需结果时,用此类函数
  • 有参数,有返回值:此类函数,不仅能接收参数,还可以返回某个数据,一般情况下,像数据处理并需要结果的应用,用此类函数

二 代码

1 ex21.py

def add(a,b):                       # 定义一个函数add,用来计算两个数的和
    print(f"ADDING {a} + {b}")      # 把程序所做的操作打印出来
    return a + b                    # 返回a+b的值

def subtract(a,b):                  # 定义一个函数add,用来计算两个数的差
    print(f"SUBTRACTING {a} - {b}") # 把程序所做的操作打印出来
    return a - b                    # 返回a-b的值

def multiply(a,b):                  # 定义一个函数add,用来计算两个数的乘积
    print(f"MUTLIPLING {a} * {b}")   # 把程序所做的操作打印出来
    return a * b                    # 返回a*b的值

def divide(a,b):                    # 定义一个函数add,用来计算两个数的商
    print(f"DIVIDING {a} / {b}")     # 把程序所做的操作打印出来
    return a / b                    # 返回a/b的值

print("Let's do some math with just functions") # 打印字符串,告诉用户现在正在做什么

age = add(30,5)                     # 调用add函数,并把函数的返回值赋给变量age
height = subtract(78,4)             # 调用subtract函数,并把函数的返回值赋给变量height
weight = multiply(90,2)             # 调用multiply函数,并把函数的返回值赋给变量weight
iq = divide(100,2)                  # 调用devide函数,并把函数的返回值赋给变量iq

print(f"Age:{age},Height:{height},Weight:{weight},IQ:{iq}\n")   # 打印计算结果

# A puzzle for the extra credit,type it in anyway.
print("Here is a puzzle.")         # 打印字符串,提醒用户现在在做的事情

# 1 调用divide函数计算iq和2的商
# 2 把divide函数的返回值作为multiply函数的参数,得到他们两个的乘积,并返回
# 3 把multiply函数的返回值作为参数传给subtract函数,计算height和它的差,并返回  
# 4 把subtract函数的返回值作为参数传给add函数,计算aga和它的和,并将函数返回值1赋给变量what
what = add(age,subtract(height,multiply(weight,divide(iq,2))))

# 打印最终的计算结果
print("That becomes:",what,"Can you do it by my hand?\n")

another = subtract(height,add(iq,divide(age,multiply(weight,3))))
print(f"{another}\n")

exercise = add(24,subtract(divide(34,100),1023))
print(f"{exercise}\n")

程序讲解:

(1)以add函数为例:

  • 1. 我们的函数是以两个参数被调用的: a 和 b 。
  • 2. 我们把函数所做的事情打印出来,在本例中是 “ADDING”。
  • 3. 然后我们让 Python 做一些反向的事情:我们返回 a + b 的和。你可以这样描述:我用 a 加上 b ,然后返回它们的结果。
  • 4. Python 把这两个数加起来。然后当函数终止的时候,运行了这个函数的任何一行都能够将 a + b 的结果赋予一个变量。

(2)为什么 python 是是“从后往前”(backward)打印公式或者函数的?

  • 它其实不是从后往前,它是从里到外(inside out)。当你开始把代码打乱成分开的公式和函数时,你会看到它是如何工作的。试着理解我说的 “inside out” 而不是 “backward” 。

2 运行结果

PS E:\3_work\4_python\2_code_python\02_LearnPythonTheHardWay> python ex21.py
Let's do some math with just functions
ADDING 30 + 5
SUBTRACTING 78 - 4
MUTLIPLING 90 * 2
DIVIDING 100 / 2
Age:35,Height:74,Weight:180,IQ:50.0

Here is a puzzle.
DIVIDING 50.0 / 2
MUTLIPLING 180 * 25.0
SUBTRACTING 74 - 4500.0
ADDING 35 + -4426.0
That becomes: -4391.0 Can you do it by my hand?

MUTLIPLING 180 * 3
DIVIDING 35 / 540
ADDING 50.0 + 0.06481481481481481
SUBTRACTING 74 - 50.06481481481482
23.935185185185183

DIVIDING 34 / 100
SUBTRACTING 0.34 - 1023
ADDING 24 + -1022.66
-998.66
posted @ 2020-07-06 17:01  洛兰123  阅读(374)  评论(0编辑  收藏  举报