Python基础——函数基础和函数参数

版权声明:本文为博主原创文章,未经博主允许不得转载。 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
'''
  1. 扩展:为动态参数传入列表、字典、元组
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)      #写错啦!

猜你喜欢

转载自blog.csdn.net/qq_34120459/article/details/86538440
今日推荐