python基础:函数

本文详细介绍了Python中的函数定义、调用方式,包括位置参数、关键字参数、默认参数、可变参数(元组和字典形式)、变量作用域、函数类型、数据类型以及filter和map函数的使用。还特别提到了lambda关键字,用于定义匿名函数。
摘要由CSDN通过智能技术生成

  • 在模块中但是类之外定义的函数——>函数
  • 在别的函数中定义的函数——>嵌套函数
  • 在类中定义的函数——>方法

函数定义

格式如下:

def 函数名(形参列表):
	函数体
	return 返回值

函数调用

使用位置参数调用函数

  • 在调用函数时传递的实参与定义函数时的形参顺序一致
def add(p1,p2):
    return p1+p2

p = add(3.7,5)
print(p)

使用关键字参数调用函数

  • 采用“关键字 = 实参”的形式调用函数
def subtraction(p1,p2):
    return p1-p2

ans1 = subtraction(3.9,5)
ans2 = subtraction(p2=3.9,p1=5)
print('ans1 = {} \n ans2 = {}'.format(ans1,ans2))

在这里插入图片描述

参数默认值

  • 即在定义函数时直接指定形式参数的默认值。这样,当没有传入参数时,则直接使用定义函数时设置的默认值。
  • 注:指定有默认值的形式参数必须在所有没默认值参数的最后,否则会产生语法错误。
    在这里插入图片描述
    这样就有语法错误

在这里插入图片描述
这样就没有语法错误

可变参数

  • python中的函数可以定义接收不确定数量的参数,这种参数被称为可变参数
  • 可变参数分为两种,即在参数前加 * 或 **

基于元组的可变参数(*可变参数)

  • 可变参数在函数中被组装成一个元组
def sum(*numbers):
    total = 0
    for number in numbers:
        total += number
    else:
        print('成功求和')
    return total
print(sum(100.6,20,30))
print(sum(30,80))

在这里插入图片描述

基于字典的可变参数(**可变参数)

  • 可变参数在函数中被组装成一个字典
def show_info(**info):
    print('===show info===')
    for key,value in info.items():
        print('{} —— {}'.format(key,value))

show_info(name = 'jam',age = 20,sex = True)
show_info(sutdent_name = 'sam',sutdent_no = '1000')

在这里插入图片描述
这些参数一个等号代表传入一个键值对,等号前面是键,等号后面是值

变量的作用域

  • 全局变量:在模块中创建的变量,作用域是整个模块
  • 局部变量:在某一范围内创建,比如函数中,默认情况下作用域是整个函数

global关键字可以把变量提升为全局变量

x = 30
def value():
    global x
    x = 10
    print('函数中x = {}'.format(x))

value()
print('全局模块中x = {}'.format(x))

在这里插入图片描述

函数类型

  • 与其他数据类型一样,python中任意一个函数都有数据类型,类型为function,被称为函数类型
x = 30
def value():
    global x
    x = 10
    print('函数中x = {}'.format(x))

value()
print('全局模块中x = {}'.format(x))

print(type(value))

通过输出可以看到value类型为function
在这里插入图片描述

理解数据类型

  • 函数类型的数据与其他类型的数据是一样的
    因此:
    一个函数可以作为另一个函数返回值使用
    一个函数也可以作为另一个函数的参数使用

    请添加图片描述
# 定义加法函数
def add(a,b):
    return a+b
# 定义减法函数
def sub(a,b):
    return a-b
#定义计算函数,返回函数数据类型
def calc(opr):
    if opr == '+':
        return add
    else:
        return sub

f1 = calc('+')  #f1实际上是add()函数
f2 = calc('-')  #f2实际上是sub()函数 

print(type(f1))
print(type(f2))

print('10 + 6 = {}'.format(f1(10,6)))
print('10 - 6 = {}'.format(f2(10,6)))

在这里插入图片描述

过滤函数filter()

  • filter() 函数用于对容器中的元素进行过滤处理
  • filter()函数语法如下:

filter( function , iterable )

  • 参数function是一个提供过滤条件的函数,返回布尔值
  • 参数iterable是容器类型的数据

在调用filter()函数时,iterable容器会被遍历,它的元素会被逐一传入function()函数中。function()函数若返回True,则元素被保留;否则被过滤。最后遍历完成,已保留的元素被放到一个新的容器数据中

def fun1(x):
    return x>50

data = (31,56,732,89.54,33,61,67.89)

filtered = filter(fun1,data)
l = list(filtered)
print(type(filtered))
print(filtered)
print(l)
print(tuple(l))
print(set(l))

在这里插入图片描述

注:filter()函数的返回值并不是一个列表或者其他容器数据类型,所以需要通过list()或tuple()或set()进行转换

映射函数map()

  • map()函数用于对容器中的元素进行映射(或变换)
  • map()函数语法如下:

map( function , iterable )

  • 参数function是一个提供变换规则的函数,返回变换之后的元素
  • 参数iterable是容器类型的数据

map()函数过程同上文filter()函数

def fun1(x):
    return x**2

data = (31,56,732,89.54,33,61,67.89)

mapped = map(fun1,data)
l = list(mapped)
print(type(mapped))
print(mapped)
print(l)
print(tuple(l))
print(set(l))

在这里插入图片描述
同理:需要通过list()或tuple()或set()进行转换

lambda关键字

  • 在python中使用lambda关键字定义匿名函数,lambda关键字定义的函数也被称为lambda()函数。语法如下:

lambda 参数列表 : lambda函数体

注:lambda函数体部分不能包含多条语句,只有一条语句,语句会计算一个结果并返回

举例比如上文的def calc(opr):函数还可以这么写

def calc(opr):
    if opr == '+':
        return lambda a,b: a + b # 替代add()函数
    else:
        return lambda a,b: a - b # 替代sun()函数

适用于函数体逻辑只有一行的情况,能减少代码量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木木彡、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值