CC00019.python——|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表达式*
~~~ 可变参数*
~~~ 装饰器*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值