本章节讲述函数的基本用法 ;请您准备好pycharm(电脑)运行工具进行操作
一、函数的基本内容
1、函数标准格式def 函数名(参数): 函数接口 函数体 return 返回值函数名命名规则: 字母、数字和下划线组成,和变量命名规则一致
return 后面可以返回任意表达式,但不能是赋值语句
2、函数调用 函数名(参数)def xiaoyan(s): print("我是{}".format(s)) xiaoyan('小闫同学')[gallery columns="1" link="file" size="full" ids="3448"]
注:必须先调用哦
3.参数- 形参:函数没有调用的时候,它没有任何意义;在调用时,必须传入参数,所以也叫必须参数
- 实参:与形参位置是一一对应的,所以也叫位置参数;缺一不可,缺了或多了都会报错
def xiaoyan(a, b): print(a, b) xiaoyan("小闫同学",'Welcome to Xiaoyan class')输出结果 如图: [gallery link="file" columns="1" size="full" ids="3450"]
如果您没看懂 我们换个简单的例子
代码:def f(x, y): print("我是{}{}".format(x, y)) #format 类型 f(1, 2)输出结果如下图: [gallery link="file" columns="1" size="full" ids="3451"] 缺少参数时 [gallery size="full" columns="1" link="file" ids="3452"]
此时,他就会报错
多参数时他也会报错
重点:
- 默认参数:不传参,用默认值,传参它也能接收;一定要放在必须参数后面,否则会报错
- 关键字参数
- 动态参数
- 扩展:为动态参数传入列表、字典、元组
return
注意 return 和 print 的区别,return是函数的返回值,返回值可以赋值给变量,而print只是打印出来
二、常用内置函数
函数名 | 作用 |
---|---|
len | 求长度 |
min | 求最小值 |
max | 求最大值 |
sorted | 排序 |
reversed | 反向 |
enumerate | 返回一个可以遍历的对象 |
eval | 取出字符串的内容,当做表达式进行运算并有返回值 |
exec | 执行字符串,没有返回值 |
filter | 过滤器,每个可迭代对象去执行函数,获取满足条件的,不满足的删去 |
map | 对于可迭代参数,应用函数,结果返回 |
zip | 配对 |
li = ['a', 'b', 'c'] for i in enumerate(li): print(i) print(list(enumerate(li)))输出结果: eval:
a = "1 + 2 + 3" print(eval(a))filter:
def f1(i): return i > 10 li = [1, 90, 23, 49, 5] print(list(filter(f1, li)))输出结果: map:
def f1(i): return i > 10 li = [1, 90, 23, 49, 5] s = [11, 34, 57] print(list(map(f1, li)))输出结果:
注:filter和map的区别是: filter是对对象的筛选,获取的是对象元素,map获取的是表达式的值(True或False)zip:
s1 = [1, 2, 3] s2 = ['a', 'b', 'c'] a = zip(s1, s2) print(dict(a))输出结果:
三、作业: (4套干货哦)
题目:定义一个函数,对指定数据进行排序,通过参数来决定是正向排序还是反向排序。 [rihide] 比较简单易懂def f(*args, s=1): if s == 0: print(sorted(args) ) elif s == 1: print(sorted(args, reverse=True)) else: print("小可爱!") li = [4,2,8,5,10] f(*li) #[10, 8, 5, 4, 2] # f(*li, s=0) #[2, 4, 5, 8, 10] # f(*li, s=1) #[10, 8, 5, 4, 2] # f(*li, s=2) #小可爱!复杂一些
#定义个函数,可以对输入的数据进行排序, 通过参数来决定是正向排序还是反向排序。 y=input('输入数字(数字之间用空格隔开):') z=int(input('输入一个整数(偶数为正向排序,奇数为反向排序):')) x=y.split(' ') #对接收的字符串进行切片,得到列表 x=list(map(eval,x)) #将列表的元素由字符串变成数字 def sort(a,b): c=sorted(b) #正向排序 if a%2==0: print(c) else: c.reverse() #逆向排序 print(c) k=sort(z,x)
y=input('输入数字(数字之间用空格隔开):') z=int(input('输入一个整数(偶数为正向排序,奇数为反向排序):')) x=y.strip().split(' ') #对接收的字符串进行切片,得到列表 x = filter(lambda x:x!='',x) try: x=list(map(eval,x)) #将列表的元素由字符串变成数字 except: print('输入存在非数字字符') def sort(a,b): c=sorted(b) #正向排序 if a%2==0: print(c) else: c.reverse() #逆向排序 print(c) k=sort(z,x)
y=input('输入数字(数字之间用空格隔开):') z=int(input('输入一个整数(偶数为正向排序,奇数为反向排序):')) x=y.strip().split(' ') #对接收的字符串进行切片,得到列表 x = filter(lambda x:x!='',x) try: x=list(map(eval,x)) #将列表的元素由字符串变成数字 except: raise Exception('输入存在非数字字符') def sort(a,b): c=sorted(b) #正向排序 if a%2==0: print(c) else: c.reverse() #逆向排序 print(c) k=sort(z,x)[/rihide]