小白学习纪实,跨专业学python的第九天~
没想到python也要学函数......真是干的漂亮......
9.1函数
9.1.1函数的意义
在生活中,试想一下我们用手洗衣服的时候,我们需要接水,放入脏衣服,放入洗衣液,然后一件件用手搓,每次洗衣服的时候都要这样干,很累。于是有人发明了洗衣机。就是将洗衣服的的操作封装成了一个机器。那么每次洗衣服的时候,我们只需要放入脏衣服,洗衣液按下启动键就可以了。它会自动帮我们完成洗衣服的这个操作。而且以后我凡是要洗衣服,我都可以让洗衣机去做。 在编写程序的世界里,我们也会经常去重复的去做一些复杂的操作,如果每次都去用代码去实现这些复杂的操作很麻烦。因此我们也需要类似于洗衣机这样的东西把这些复杂的操作封装起来,可以供我们反复的使用。代码的重用在程序中很重要,在这一章里,你将会学到Python 的多种重用代码的方式。 我们知道圆得面积计算公式为: S = π r 2 当我们知道半径 r 的值时,就可以根据公式计算出面积。假设我们需要计算 3 个不同大小的圆的面积:# 计算 3 个不同大小的圆的面积:
r1 = 12.34
r2 = 9.08
r3 = 73.1
s1 = 3.14 * r1 * r1
s2 = 3.14 * r2 * r2
s3 = 3.14 * r3 * r3
print("{},{},{}".format(s1,s2,s3))
在上面这种情况中,代码出现了有规律得重复,每次写 3.14 * x * x 不仅很麻烦,如果要把3.14换 成3.1415926 得时候,上面计算表达式里面都需要修改。
有了函数,我们就不再每次写 s = 3.14 * x * x ,而是写成更有意义的函数调用 s = area_of_circle(x),而函数 area_of_circle 本身只需要写一次,就可以多次调用。def area_of_circle(r):
"""
计算圆面积的函数
@param r 圆的半径
@return 圆的面积
"""
return 3.14 * r * r
# 计算圆面积时,可以调用函数,并传入圆的半径
s1 = area_of_circle(12.34) # 计算半径为12.34的圆的面积
s2 = area_of_circle(9.08)
s3 = area_of_circle(73.1)
函数可以提高我们代码的复用性,节省代码量,同时也方便我们后期对代码维护。可以大大提高开发效率。
9.2 定义函数
在 Python 中,定义一个函数要使用 def 语句,一个函数有三个部分组成:名字,参数,函数体。def 函数名 (参数1...) :
函数体
编写一个专用来向指定对象打招呼的函数:
# 定义函数
# say_hello 函数名
# other_name 函数的参数 (需要打招呼的对象)
def say_hello(other_name):
# 以下称为函数体(函数中的代码内容)
print("hello %s !!" % other_name)
print("今晚要不要一起赏个月?")
调用函数:
# 函数调用
say_hello("苍姐姐")
print("#################")
# 函数调用
say_hello("赵丽颖")
9.2.1 函数的参数
当我们在设计函数的时候,我们需要思考,完成这个函数所要包含的功能时,哪些东西是变化的,可以把这些变化的东西定义成函数的参数,写在函数名后面的括号里。 我有很多个老婆,今天要带出去介绍给大家认识,让大家知道她们的姓名,年龄,爱好等。我需要设计一个自我介绍的函数,分别介绍她们。在这里,姓名,年龄,爱好每个老婆都是不一样的,是变化的,我们可以把这些定义成函数的参数:def introduce(name,age, like):
"""
:自我介绍的方法
:name 姓名
:age 年龄
:like 爱好
"""
print("大家好,我是攀哥的老婆",name,"今年",age,"喜欢",like)
print("我很喜欢攀哥~你们不要和我抢~~")
在设计函数时,可以将完成函数需要依赖的变量定义成参数,参数可以写任意多个。
introduce("赵丽颖",18,"跳舞")
introduce("小苍姐姐",18,"打扑克")
introduce("刘亦菲",18,"唱歌")
9.2.2 函数的返回值
通常情况下我们需要函数执行完毕之后,给我们一个最终的结果。在程序中我们可以拿到这个结果,继续去参与其他工作。这个结果我们称为返回值。 在定义函数时,可以通过 return 语句,返回函数处理的最终结果。比如在开篇,求圆的面积的函数中,我们传入了一个圆的半径,我们希望函数帮我们根据这个半径计算一下圆的面积,并将计算结果告诉我们。我们就是使用的return 返回的计算结果。 刘备三顾茅庐案例:def get_km(count): # count 刘备访问茅庐的次数
if count == 1:
return "先生远游未归"
elif count == 2:
return "吾非孔明,乃孔明之弟也"
elif count == 3:
return "大梦谁先觉,平生我自知,吾乃孔明"
else:
return "请按照剧本来"
刘备每次调用拜访孔明的函数时,会获得不同的结果,每个结果都是通过return返回给调用的地方。(return 的结果,是会返回给调用的位置,在哪里调用,结果就返回到哪里)
for x in range(1, 5):
result = get_km(x)
print("第%d次造访茅庐:%s" % (x, result))
在上面的for循环中,x会依次取1,2,3 。get_km(x)会将对应的x值传给函数的count参数中,然后函数中根据count的去执行if语句。如果count==1,会return “先生远游未归”。
return会意思是将结果返回。那返回到哪里去了呢?实际上是返回到了调用的位置。也就是在哪里调用的函数,那么执行函数的最终结果就会返回到哪里。比如在循环中,result = get_km(x) 在这里我们调用get_km函数,并传入了参数x。那么执行函数最终得到的结果,会返回到这里。然后赋值给了result。也就是说result中最终存放了执行get_km(x)这个函数得到的结果。
有返回值的函数,在调用后,我们都可以使用一个变量去接收函数返回的结果。9.2.3 None值
在 Python 中有一个值称为 None ,它表示没有值。 None 是 NoneType 数据类型的唯一值。其他编程语言可能这个值为null 或者 undefined 。就像布尔值 True 和 False 一样, None 必须首字母大写。 如果你希望变量中存储的东西不会与一个真正的值混淆,这个没有值的值可能就有用。有一个使用None的地方就是 print() 的返回值。 print() 函数在屏幕上显示文本,但它不需要返回任何值。这个 len() 或input()不同。但既然所有函数都需要求值为一个返回值,那么 print() 就返回 None 。
say = print("社会我攀哥,人狠话不多")
print(say==None)
运行效果:
社会我攀哥,人狠话不多
True
实际上,对于所有没有return语句的函数定义,Python都会在末尾加上return None。这个类似于 while 或 for 循环隐式的以continue语句结尾。而且,如果使用不带值的return语句(就只写return关键字),那么就返回None。
9.2.4 匿名函数(lambda)
匿名函数是指没有名字的函数,应用在需要一个函数,但是又不想费神去命名这个函数的场合。在通常情况下,这样的函数只使用一次。在Python 中,使用 lambda 表达式创建匿名函数。其语法格式如下:result = lambda 参数列表:expression
参数说明如下:
1. result:用于调用lambda表达式
2. 参数列表: 可选参数,用于指定要传递的参数列表,多个参数间用“,”逗号进行分隔。
3. expression: 必选参数,用于指定一个实现具体功能的表达式,如果有参数,那么在该表达式中将 应用这些参数。
我们来看一个普通的计算圆面积的函数:import math
def circlearea(r):
result = math.pi*r*r
return result
r = 10
print("半径为",r,"的圆面积为:",circlearea(r))
修改成lambda表达式代码如下:
import math
r = 10
# r 为匿名函数的参数
# :math.pi*r*r 这个是匿名函数具体要执行的内容
result = lambda r:math.pi*r*r
# 这里的result就相当于是一个函数名了
print(result) # 会打印<function <lambda> at 0x0000025B94BB01F0>
print("半径为",r,"的圆面积为:",result(r)) # result(r) 调用lambda表达式,并传入参数r
今天就暂时学到这里吧,明天继续~✌✌✌
标签:None,return,函数,python,09,参数,result,print,难度
From: https://blog.csdn.net/patty0216/article/details/142953874