|NO.Z.00019|——————————|BigDataEnd|——|Hadoop&Python.v19|——|Arithmetic.v19|语法:进阶&函数.V1|
一、Python进阶:函数
### --- Python进阶:函数
~~~ 在前面的学习过程中,我们已经接触了很多次函数,
~~~ 现在我们来好好的认识一下这个重要的小伙伴。
~~~ 函数就是一段可以重复调用的代码在Python中函数是非常重要的概念,在编程中几乎无处不在。
一、函数定义及调用
### --- 在Python在, 我们使用def关键字来定义函数
~~~ 上面的代码定义了一个最简单的函数,它的作用就是打印出"Hello"加一个名字。我们看看它的结构:
def hello(name):
print("Hello", name)

~~~ # 调用hello函数,将会打印“Hello, Python”
~~~ # 在这个过程中发生什么什么事呢?这实际上是将name传递给hello函数,也就是将name的值设置为"Python",并执行函数体内的代码。
hello("Python")
二、函数的参数
~~~ # 函数的参数可以有一个,也可以有多个,也可以没有参数。这取决于在定义函数的时候如何定义参数部分。刚才我们定义的函数只有一个参数,现在我们定义两个参数的函数。
def hello(name, sex):
if sex == '男':
print("Hello, Mr", name)
elif sex == '女':
print("Hello, Miss", name)
~~~ # 这个函数有两个参数,name和sex,分别表示用户的名字和性别,以便显示不同的尊称。我们在调用的时候,要注意参数的顺序,不能前后颠倒。调用函数:
hello("Zhang", "男")
hello("Wang", "女")
~~~ # 如果参数较多,记不清它们的顺序,可以写上参数名,这样就不用管顺序了。
hello(sex='男', name='Zhang')
~~~ # 如果说用户大多数是女的,只有少部分的男性,那这个函数还可以改造一下,我们让它的sex参数默认就是“女”:
def hello(name, sex='女'):
if sex == '男':
print("Hello, Mr", name)
elif sex == '女':
print("Hello, Miss", name)
~~~ # 和上面的函数相比,只是在sex参数后面加上一个默认值,这样,后面用户没有填性别信息的时候,就会默认为女性。
hello("Wang")
~~~ # 如果每一个参数都有默认值,在调用的时候甚至可以不传参数。
~~~ # 现在这个函数对于信息不完整的数据也有处理能力了。
def hello(name='Anonym', sex='女'):
if sex == '男':
print("Hello, Mr", name)
elif sex == '女':
print("Hello, Miss", name)
hello() # Hello, Miss Anonym
三、函数的返回值
### --- 如果将函数比做一名员工,调用函数的我们就是老板,老板给员工一些具体的指示,员工则按规定好的流程去做事。有一些事情,比如老板说去打扫一下厕所,员工就默默地去干活了,干完了就完事了。如果是一些需要回复的事情,比如老板让员工去算一下去年公司的收入,那老板的意思肯定是要知道最后算出来的那个数字。对于函数也是一样,有一些函数我们是需要知道执行的结果。
def multiply(num1, num2):
return num1 * num2
n = multiply(2, 4)
print(n) # 8
### --- multiply函数的功能是计算两个数相乘,我们传入两数字作为参数,希望能得到一个这两个数相乘的结果。multiply的最后一行使用return 关键字将结果返回。通常在函数的最后一行返回结果,但有时候也有多种可能。
def permit(age):
if age >= 18:
print("准许进入")
return True
else:
print("禁止进入")
return False
print("end")
### --- 上面我们定义了一个只允许成年人进入的函数,如果年龄大于等于18岁,返回True,表示允许通过;如果小于18岁则不允许。虽然有两个return语句,但只返回一个结果,要么返回True要么返回False。注意在return语句执行完后,函数就会结束执行,在它之后的任何语句都不会再执行,所以上例中的“end”无论怎么样都不会被打印。
### --- 如果一个函数内没有任何return语句,那它的返回值就是None。
def do_nothing():
pass
print(do_nothing()) # None
四、匿名函数
### --- 有时候我们临时需要一个函数,且它的逻辑比较简单,这时候就可以定义匿名函数。
lambda n: n * n
### --- 这就定义了一个匿名函数,这个匿名函数接收一个数值参数,计算出这个数的平方值并返回,就相当于下面的函数
def square(n):
return n * n
### --- lambda是Python中的关键字,它的作用就是用来定义匿名函数,匿名函数的函数体一般只有一行代码,省略了函数名和返回值语句。
### --- 这样的函数它的作用是什么呢?什么时候需要使用匿名函数而不是函数呢?回忆一下,我们在学习列表排序的时候用过一个匿名函数,现在是时候重温一下了。
revenue = [('1月', 5610000), ('2月', 4850000), ('3月', 6220000)]
revenue.sort(reverse=True, key=lambda x:x[1])
### --- 列表的sort函数key参数,它只能接收一个函数类型的值。单独看一下这段匿名函数:
key = lambda x: x[1]
### --- 现在key就是一个函数了,我们来调用一下它,x[1]这种索引操作说明x肯定是个序列,且长度至少为2。
key([1, 2]) # 2
key("abcd") # 'b'
### --- key函数的作用就是返回序列中的第二个元素,在sort排序的时候就会以每个元素的第二个元素作为比对的依据。在这个例子中,第二个元素就是月收入,所以是不是达到了以月收入排序的目的了?
### --- 这样的一个简单的功能,我们用不着单独定义一个函数,即用即抛,就像一次性手套一样,这正是匿名函数的使用场景。
~~~ 值和引用*
~~~ 作用域/global*
~~~ yield表达式*
~~~ 可变参数*
~~~ 装饰器*
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
bdv027-python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了