每天 3 分钟,小闫带你学 Python(二十一)

简介: 每天 3 分钟,小闫带你学 Python(二十一)

每日分享

When you see a person without a smile, give them one of yours.

当你看到一个没有笑容的人时,请给他们一个。

小闫语录:

传递温暖,既暖了他人,也暖了自己。


前言

昨天的文章『每天 3 分钟,小闫带你学 Python(二十)』讲解了函数的返回值:

1.函数返回值概念理解,以及有返回值的函数书写。

2.函数内多个返回值的情况。

3.函数返回多个数据情况。

学习目标

1.掌握函数的4种类型,了解其使用场景。

2.熟悉函数嵌套的执行顺序。

3.掌握拆包与交换变量的值。

1.函数的4种类型

根据是否有参数以及是否有返回值,可以将函数大体分为四种类型。大家根据实际使用场景进行自由组合,灵活设计使用即可。

1.1 有参数有返回值

描述:此类函数既可以接受参数,又具有返回值。

适用场景:设计一个通用流程,可以根据参数进行数据处理,并将数据处理结果返回给调用者。

示例:

# 计算1~num的累积和
def sumresult(num):
    result = 0
    i = 1
    while i<=num:
        result = result + i
        i+=1
    return result
result = sumresult(100)
print('1~100的累积和为:%d'%result)

1.2 有参数无返回值

描述:此类函数可以接受参数,但是没有返回值。

适用场景:适用于不需要返回结果,只需要调整内部变量执行简单输出的情况,如之前根据输入不同名字,输出欢迎语的功能。

示例:

def welcomename(name):
    print("热烈欢迎 %s 的到来" % name)

1.3 无参数有返回值

描述:此类函数不可以传入参数,但是有返回值。

适用场景:采集指定的数据,或者执行特定的功能需要重复使用结果。

示例:

def gettime():
    # 进行时间获取操作,此处省略
    return time
time = gettime()

1.4 无参数无返回值

描述:此类函数既不能接受参数,又没有返回值。

适用场景:简单的的打印操作。如提示灯、特殊的图形等等。

示例:

def printfunc():
    print('--------------------------')
    print('      小闫笔记 温馨提示')
    print('')
    print('  1.  先看使用说明再进行公众号使用')
    print('  2.  历史文章搜索不在公众号聊天界面')
    print('  3.  感谢每一位关注的粉丝,你的支持是我坚持的动力')
    print('--------------------------')

2.函数的嵌套使用

在学习了之前循环函数嵌套使用、条件判断语句嵌套使用的情况后,大家应该理解了嵌套的概念。函数的嵌套使用,顾名思义,函数内部有函数。鉴于大家初学函数,此处嵌套为函数内部调用其他函数,函数内部定义函数的情况称之为闭包,是高级内容,历史文章中有此部分介绍。根据示例,大家思考一下它的执行顺序:

def testB():
    print('---- testB start----')
    print('这里是testB函数执行的代码...(省略)...')
    print('---- testB end----')
def testA():
    print('---- testA start----')
    testB()
    print('---- testA end----')
testA()

看一下执行结果,是否同你预想的一样呢?

  1. ---- testA start----
  2. ---- testB start----
  3. 这里是testB函数执行的代码...(省略)...
  4. ---- testB end----
  5. ---- testA end----

在调用函数 A 的时候,从上到下按顺序执行函数 A 内部代码 ,在函数 A 内部遇到调用函数 B 时,会从上到下按顺序执行函数 B 内部代码,函数 B 代码执行结束后接着返回函数 A 中调用函数 B 位置之后的代码,直到函数 A 执行完毕。

3.拆包与交换变量的值

3.1 拆包

此处的拆包并非是 CF 中的 C4 炸弹,而是将多个元素的集合,拆分成一个个元素的情况

上述所说集合并非是数据类型集合,而是生活中的概念,集合为很多元素的聚集。

可以拆包的数据类型:元组、列表、字典等多元素集合。

以元组为例,对其进行拆包操作,其他数据类型留给大家练习。

mytuple = (1, 2, 3, 4)
a,b,c,d = mytuple
print(a)
print(b)
print(c)
print(d)

执行结果为:

  1. 1
  2. 2
  3. 3
  4. 4

经过拆包操作,可以看到元组内部的元素已经分别赋值给了 a/b/c/d

3.1.1 注意

拆包时,外部接收变量的个数必须与元素集合内部元素个数一致,否则会报错。

3.1.2 应用

前面讲到,一个函数如果有多个返回值,但是在调用函数后,使用一个变量进行接收返回值,会发现变量是一个元组,如果想使用内部的元素,可以进行拆包操作:

def getinfo():
    name = 'Ethanyan'
    weight = 175
    age = 18
    return name, weight, age
my_name, my_weight, my_age = getinfo()
print(my_name)
print(my_weight)
print(my_age)

大家看到结果或许很熟悉,之前讲到函数返回值时提到过此种写法,但是未说明它是拆包操作,现在理解即可。

3.2 交换变量的值

假设有两个变量 a 和 b,如果想要交换两者的值,怎么办?

1.可以使用第三个变量:

  1. a =4
  2. b =6
  3. c = a
  4. a = b
  5. b = c
  6. print(a)
  7. print(b)

查看输出结果:

  1. 6
  2. 4

可以看到变量 a 和 b 的值已经互换。

2.Python 骚操作

Python 提供了一种交换变量值的骚操作,如下:

a = 4
b = 6
a, b = b, a
print(a)
print(b)

查看结果:

  1. 6
  2. 4

达到了效果,而且简化了操作。是不是很厉害?

4.作业

1.写一个函数,此函数功能为打印一条横线。

2.将上个函数改写,可以打印自定义函数的横线。

涉及到了函数嵌套的使用

答案:

# 打印一条横线
def printOneLine():
    print("-"*30)
# 打印多条横线
def printNumLine(num):
    i=0
    # 因为printOneLine函数已经完成了打印横线的功能,
    # 只需要多次调用此函数即可
    while i<num:
        printOneLine()
        i+=1
printNumLine(3)

3.写一个函数求三个数的和。

4.将上面的函数改写,改为可以求三个数的平均值。

答案:

# 求3个数的和
def sum3Number(a,b,c):
    return a+b+c # return 的后面可以是数值,也可是一个表达式
# 完成对3个数求平均值
def average3Number(a,b,c):
    # 因为sum3Number函数已经完成了3个数的就和,所以只需调用即可
    # 即把接收到的3个数,当做实参传递
    sumResult = sum3Number(a,b,c)
    aveResult = sumResult/3.0
    return aveResult
# 调用函数,完成对3个数求平均值
result = average3Number(11,2,55)
print("average is %d"%result)


相关文章
|
10月前
|
Python
每天 3 分钟,小闫带你学 Python(二十六)
每天 3 分钟,小闫带你学 Python(二十六)
|
10月前
|
程序员 Python
每天 3 分钟,小闫带你学 Python(二十五)
每天 3 分钟,小闫带你学 Python(二十五)
|
10月前
|
Unix Linux iOS开发
每天 3 分钟,小闫带你学 Python(二十四)
每天 3 分钟,小闫带你学 Python(二十四)
|
10月前
|
Python
每天 3 分钟,小闫带你学 Python(二十三)
每天 3 分钟,小闫带你学 Python(二十三)
|
10月前
|
存储 iOS开发 Python
每天 3 分钟,小闫带你学 Python(二十二)
每天 3 分钟,小闫带你学 Python(二十二)
|
10月前
|
存储 Python 容器
每天 3 分钟,小闫带你学 Python(二十)
每天 3 分钟,小闫带你学 Python(二十)
|
10月前
|
C语言 Python
每天 3 分钟,小闫带你学 Python(十九)
每天 3 分钟,小闫带你学 Python(十九)
|
10月前
|
Python 容器
每天 3 分钟,小闫带你学 Python(十八)
每天 3 分钟,小闫带你学 Python(十八)
|
10月前
|
索引 Python
​每天 3 分钟,小闫带你学 Python(十七)
​每天 3 分钟,小闫带你学 Python(十七)
|
10月前
|
索引 Python
每天 3 分钟,小闫带你学 Python(十六)
每天 3 分钟,小闫带你学 Python(十六)