5.Python国的一国多治
什么是函数?函数其实就是执行特定任务和完成特定功能的一段代码,我们在 Python 中可以自己书写函数,如我们可以用 def,lambda 来告诉编译器这是我们自己写的函数,也可以使用系统中已经写好的函数:内置函数,这些函数你可以理解为因为在使用 Python 开发的过程中,一直在频繁的进行使用,故开发者为了方便,把这些代码打包成一个又一个函数,可供大家一直调用。在本章节学习中,*5.1 Python中常用的内置函数 会给大家介绍一部分的内置函数,这些函数我们会经常的使用,必须学会它们的使用规则,本章节标题为 Python 国的一国多制,那是因为我们可以把每一个函数都当成一种政体,它们一起相互作用组成了 Python 这个伟大的国度,并且函数与函数之间相互独立(函数内可以调用其他函数)。接下来,就让我们进入面向过程最后一节的学习。
*5.1 Python中常用的内置函数
注:本小节带 *,不需要进行学习,可以简单进行了解
⛲️ 本小节可以说还是比较重要的,但为什么本小节打 * 了呢?这是因为我们没必要去记忆这些函数(期末考试除外),在我们需要的时候我们只需要来本小节去查找用法即可
函数 | 功能说明 |
len(obj) | 返回对象 obj 中包含的元素个数 |
max(…) | 返回一个序列元素的最大值 |
min(…) | 返回一个序列元素的最小值 |
abs(x) | 返回数字 x 的绝对值或复数 x 的模 |
sum(x, start=0) | 求一个序列中所有元素的和 |
reversed(seq) | 返回seq中所有元素逆序的结果 |
sorted(iterable, key=None, reverse=False) | 返回排序后的列表,iterable为要排序的对象,key指定排序规则,reverse用来指定升降序 |
bin(x) | 把整数x转为二进制串 |
oct(x) | 把整数x转为八进制串 |
hex(x) | 把整数x转为十六进制串 |
zip() | 将对应位置上的元素压缩在一起 |
id(obj) | 返回 obj 的内存地址 |
range(start, end, step) | 返回一个左闭右开[start, end),步长为 step 的对象 |
type(obj) | 返回 obj 的类型 |
map(func, *iterables) | 返回若干个map对象,函数func参数来自iterables指定的迭代对象 |
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/16 12:45 # 欢迎大家关注AIoT相关博客~ # len():返回元素的长度 a = [1, 2, 3, 4, 5] print('a的长度是:', len(a)) # max():返回元素的最大值 print('a中的最大值是:', max(a)) # min():返回元素的最小值 print('a中的最小值是:', min(a)) # abs():返回绝对值 print('-3的绝对值是:', abs(-3)) # sum():返回序列中全部元素的和 print('[1, 2, 3, 4, 5]的和为:', sum(a)) # reversed():返回一个序列的逆序 b = reversed(a) print('a逆序的结果为:', end = '') for item in b: print(item, end = ' ') print() # sorted():返回排序后的列表 c = [3, 2, 5, 1, 4] c = sorted(c) print('c排序的结果为:', end = '') for item in c: print(item, end = ' ') # bin():把整数转为二进制 print('8的二进制为:', bin(8)) # oct():把整数转为八进制 print('10的八进制为:', oct(10)) # hex():把整数转为十六进制 print('30的十六进制为:', hex(30)) # zip():将对应位置的元素压缩在一起 a = [1, 2, 3, 4, 5] b = ['h', 'e', 'l', 'l', 'o'] print(list(zip(a, b))) # id():返回内存地址 d = 666 print('666的内存地址是:', id(666)) # range():产生一个[start, end),步长为step的对象 a = range(10) print(a) # type():返回对象的类型 print('数字7的类型为:',type(7)) # map():把原序列的元素经过func操作 print(list(map(str, range(5)))) # 把[0 ~ 5)转为字符串存入列表 # 在同一行输入两个数并赋值 a,b = map(int,input('输入两个数(数字之间用空格隔开):').split()) print(a, b)
5.2 函数的创建与调用
🚩为什么需要函数?
1️⃣ 复用代码:有一些代码我们可能会频繁的进行使用,故我们可以把这些代码打包成函数,我们在需要的时候调用函数即可.
2️⃣ 隐藏实现细节:拿榨汁机举例子,我们在使用榨汁机的时候,只需要掌握基本的开关即可,完全没必要去了解其内部是如何组装,电路板之间怎么链接的问题,函数也是一样的,我们可以把具体代码封装起来,只需要会调用即可
3️⃣提高可维护性,可读性,便于调试:我们以后写工程代码可能会特别长,一个成千上万行的代码我们去找 bug 是十分困难的,读懂这种代码也是十分的困难的,如果我们把代码转为一个又一个函数,只需要找到具体的函数进行更改即可,并且看起来会更加的直观。
函数的创建语法格式:
def 函数名(参数1, 参数2, ...): 函数体 return xxx
我们还是用榨汁机去理解这个语法格式,def 函数名 为定义这是一个机器,并给他命名;这里函数的命名满足标识符的命名原则,详见:*1.2.1 标识符和保留字,具体它什么机器我们还得去看它的执行功能是什么(即函数体),比如我们的榨汁机实现榨汁功能,那么它的函数体就是实现榨汁这个操作,我们榨汁当然还要有原料,比如榨胡萝卜汁,榨西瓜汁等,胡萝卜,西瓜就是我们传入给函数的参数;最后我们榨汁肯定是要给人喝的,return xxx 的含义就是把操作完的值返回给调用函数的地方,函数的调用的语法格式为:
函数名(参数1, 参数2, ...)
下面我们举例子来让大家理解,比如我们实现一个 cal 函数,其函数的目的是接收两个参数,并把它们的值相加并返回相加后的值:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/17 23:02 # 欢迎大家关注AIoT相关博客~ def cal(a, b): c = a + b return c a, b = map(int, input().split()) res = cal(a, b)# 调用函数 cal,并把函数的返回值赋值给c print(res)
5.3 函数的参数传递
🚩形式参数与实际参数:我们把定义函数中的参数称为形式参数,把调用函数的位置的参数称为实际参数,如下述代码:
def cal(a, b): # 这里的 a, b c = a + b return c res = cal(1, 2) # 这里的 1, 2 称为实际参数 print(res)
函数的参数传递有两种方法:
1️⃣ 位置传参:按照位置进行传参,比如在这个代码中:
def cal(a, b): c = a + b return c res = cal(1, 2) print(res)
在这个代码中,1 会传给 a,2 会传给b,位置传参其实就是把实际参数中的位置和形式参数中的位置一一进行对应赋值
2️⃣ 关键字传参:按照关键字的命名进行传参,如下述代码:
def cal(a, b): c = a + b return c res = cal(b = 1, a = 2) print(res)
在这个代码中,我们在调用函数的时候已经规定了 b = 1, a = 2;故对于这样的调用,在给形式参数赋值时就不会执行位置传参,而会执行关键字传参,在形式参数中 b = 1, a = 2
5.4 函数的返回值
🚩我们知道,函数的返回值即 return 后面所跟的值,返回的位置为调用函数的位置,就比如简单的实现两数相加:
def cal(a, b): c = a + b return c a, b = map(int, input().split()) res = cal(a, b) # 调用函数 cal,并把函数的返回值赋值给c print(res)
调用函数的位置为 cal(a, b),在 cal 函数中不难看出有 return 语句,意思为把 c 的值返回给调用函数的地方,你可以粗暴的理解为 cal(a, b) = c,即删掉 cal(a, b) 语句,换上一个 c,即 res = cal(a, b) 变成了 res = c.
如果你学过 C/C++,你知道,函数至多返回一个值,不可能返回两个值或者更多的值,我们的 Python 则不然,Python 可以同时返回多个函数值:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/19 8:38 # 欢迎大家关注AIoT相关博客~ def find(num): odd = [] # 用来存奇数 even = [] # 用来存偶数 for i in num: if i % 2 == 0: even.append(i) else: odd.append(i) return odd, even print(find([2, 83, 71, 42, 26, 99]))
我们可以看出,Python 支持返回多个值,且当函数有多个返回值的时候,返回结果为元组