首页 > 编程语言 >【python学习记录篇】09.Python函数进阶,上难度了上难度了

【python学习记录篇】09.Python函数进阶,上难度了上难度了

时间:2024-10-23 13:17:41浏览次数:3  
标签:None return 函数 python 09 参数 result print 难度

小白学习纪实,跨专业学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

相关文章

  • Python脚本,它将遍历指定目录下的所有.srt文件,移除其中的不必要的英文字符、不必要的空
    Python脚本,它将遍历指定目录下的所有.srt文件,移除其中的不必要的英文字符、不必要的空行以及不必要的空格。该脚本会保留字幕索引、字幕时间线以及字幕中的中文内容,并且只保留字幕中的中文内容。它还会保留字幕行与字幕之间的换行符,同时去掉字幕与字幕之间的不必要的换行符。处理......
  • P7909 [CSP-J 2021] 分糖果
    结论题题面概括请在$[l,r]$中找出一个数$k$,使得$n$%$k$的值最大.思路当$n\le10^9$时,说明$\Theta(n)$的算法已经结束了.所以,接下来是结论推理.当$\left\lfloor\frac{l}{n}\right\rfloor=\left\lfloor\frac{r}{n}\right\rfloor$时,$r$%$n$的......
  • Python酷库之旅-第三方库Pandas(162)
    目录一、用法精讲741、pandas.Period.month属性741-1、语法741-2、参数741-3、功能741-4、返回值741-5、说明741-6、用法741-6-1、数据准备741-6-2、代码示例741-6-3、结果输出742、pandas.Period.ordinal属性742-1、语法742-2、参数742-3、功能742-4、返回值......
  • DictProxy和dict的内存大小_python_如何最小的保存dict_20241023
    缘由:在写多进程的时候,进程之间要用到共享变量,Manager,于是发现了一种新的数据类型:multiprocessing.managers.DictProxy简单来说,这种数据类型特点是,只读模式,内存占用的更少,平均减少了四分之一,最高测试可以减少到1/20,配合pickle.dumps来使用,那么存到本地的文件原本可能是......
  • 原创计算机毕业设计—69271 django重大公告卫生事件物资管理系统 (源码免费领)定制程序
    摘要随着信息技术的快速发展,计算机应用已经进入成千上万的家庭。随着物资数量的增加,物资库存管理也存在许多问题。物资数据的处理量正在迅速增加,原来的手工管理模式不适合这种形式。使用计算机可以完成数据收集、处理和分析,减少人力和物力的浪费。需要建立重大公告卫生事件......
  • 原创计算机毕业设计—58671 基于SpringBoot的健康管理系统(源码免费领)小程序、APP、JAV
    摘 要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,健康管理系统被用户普遍使用,为方便用户能够可以随时进行健康管理系统的数据信息管理,特开发了基于springboot的健康管理系......
  • 3.12版本的python调用MATLAB2024b,安装matlab.engine教程
    #3.12版本的python只能使用2024b的matlab的接口。一、各个版本的兼容关系如下,可通过下面链接去官网查询。VersionsofPythonCompatiblewithMATLABProductsbyRelease-MATLAB&Simulink二、安装matlab.engine!可能由于版本比较新的原因,查了很多资料,给出的方法都没......
  • Python 文件路径与文件系统操作
    处理文件的另一个重要方面是文件路径和文件系统操作。Python提供了多个模块用于操作文件系统,其中最常用的是os模块和pathlib模块。掌握这些工具,能够让你在自动化任务中更轻松地管理文件和目录。1文件路径的基本操作在操作文件时,路径是一个至关重要的概念。文件路......
  • Python 学习记录
    前言简单情况:主要记录学习Python的简单情况,包括代码与结果,以及关键注释工具与来源:一下代码与结果都可在JupyterLab上实现,更多情况可看Github使用NumPy可视化数学函数1.可视化f=x1*e(-x12-x22)importnumpyasnpimportmatplotlib.pyplotaspltx1_array=np.linspa......
  • 计算机毕业设计Python+大模型知识图谱中华古诗词可视化 古诗词智能问答系统 古诗词数
    温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!开发技术:前端:vue.jsechartsD3.js后端:Flask/Django机器学习/深度学习:LSTM情感分析模型、PyTorch、T......