版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34120459/article/details/86538440
一、函数的基本内容
1、函数标准格式
def 函数名(参数):
函数接口
函数体
return 返回值
函数名命名规则: 字母、数字和下划线组成,和变量命名规则一致
return 后面可以返回任意表达式,但不能是赋值语句
2、函数调用:
函数名(参数)
def f1(s):
print("我是{}".format(s))
f1('小可爱')
# 输出结果:我是小可爱
注:要先定义才能调用哦!
3、参数
- 形参:函数没有调用的时候,它没有任何意义;在调用时,必须传入参数,所以也叫必须参数
- 实参:与形参位置是一一对应的,所以也叫位置参数;缺一不可,缺了或多了都会报错
- 正确使用:
def f(x, y):
print("我是{}{}".format(x, y))
f(1, 2)
#输出结果:我是12
- 缺参数时:
def f1(x, y):
print("我是{}{}".format(x, y))
f1(1)
输出结果:
- 多参数时:
def f1(x, y):
print("我是{}{}".format(x, y))
f1(1, 2, 3)
输出结果:
-
默认参数:不传参,用默认值,传参它也能接收;一定要放在必须参数后面,否则会报错
-
关键字参数
f(x=1, y=2)
通过关键字去找对应的必须参数,这样就不需要一一对应了。 -
动态参数
一般写法:def f(*args, **kwargs) ;
*args:调用参数时,所有传入的多余的位置参数都会被args接收生成一个元组;
**kwargs:函数调用时,多余的关键字参数,都会被kwargs接收,生成一个字典
def sum(**kwargs):
print("b:", kwargs["b"])
r = 0
for i in kwargs.values():
r += i
print(r)
sum(a=1, b=3, c=7, d=100)
'''
输出结果:
b: 3
111
'''
- 扩展:为动态参数传入列表、字典、元组
def f1(*args):
print(args)
li = [1, 2, 3]
f1(4, 5, 6) #输出结果:(4, 5, 6)
f1(li, 2333) #输出结果:([1, 2, 3], 2333)
f1(*li) #输出结果:(1, 2, 3)
3、return
注意 return 和 print 的区别,return是函数的返回值,返回值可以赋值给变量,而print只是打印出来
二、常用内置函数
函数名 | 作用 |
---|---|
len | 求长度 |
min | 求最小值 |
max | 求最大值 |
sorted | 排序 |
reversed | 反向 |
enumerate | 返回一个可以遍历的对象 |
eval | 取出字符串的内容,当做表达式进行运算并有返回值 |
exec | 执行字符串,没有返回值 |
filter | 过滤器,每个可迭代对象去执行函数,获取满足条件的,不满足的删去 |
map | 对于可迭代参数,应用函数,结果返回 |
zip | 配对 |
enumerate:
li = ['a', 'b', 'c']
for i in enumerate(li):
print(i)
print(list(enumerate(li)))
eval:
a = "1 + 2 + 3"
print(eval(a))
# 输出结果:6
filter:
def f1(i):
return i > 10
li = [1, 90, 23, 49, 5]
print(list(filter(f1, li)))
#输出结果:[90, 23, 49]
map:
def f1(i):
return i > 10
li = [1, 90, 23, 49, 5]
s = [11, 34, 57]
print(list(map(f1, li)))
#输出结果:[False, True, True, True, False]
filter和map的区别是: filter是对对象的筛选,获取的是对象元素,map获取的是表达式的值(True或False)
zip:
s1 = [1, 2, 3]
s2 = ['a', 'b', 'c']
a = zip(s1, s2)
print(dict(a))
#输出结果:{1: 'a', 2: 'b', 3: 'c'}
三、练习
题目:定义一个函数,对指定数据进行排序,通过参数来决定是正向排序还是反向排序。
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) #写错啦!