python学习 -- functions

本文详细介绍了Python中的函数概念,包括如何定义函数、参数的使用(位置参数、关键字参数、默认值)、可变参数和匿名函数(lambda表达式)。还讨论了函数的文档编写和模块性提升的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段,函数能提高应用的模块性和代码的重复利用率

# 定义函数:

def: 关键字def (defined缩写)

python自动格式化快捷键:ctrl+alt+L

def get_money(job, money):  # 形式参数job,money 定义函数时,函数名称后面括号中的参数
    print(f"{job}一个月工资是{money}块")

# 打印函数的comments内容:

方法一: print(get_money.__doc__)

def get_money(job, money): 
    """
    这是一个用来计算工作薪水的函数
    :param job:
    :param money:
    :return:
    """
    print(f"{job}一个月工资是{money}块")


print(get_money.__doc__)
  #  这是一个用来计算工作薪水的函数
  #  :param job:
  #  :param money:
  #  :return:

方法二: help(get_money) 

def get_money(job, money):  
    """
    这是一个用来计算工作薪水的函数
    :param job:
    :param money:
    :return:
    """
    print(f"{job}一个月工资是{money}块")


help(get_money)
# get_money(job, money)
#    这是一个用来计算工作薪水的函数
#    :param job:
#    :param money:
#    :return:

# 创建空函数

方法一: 创建函数后写注释;

def case_demo1():
    """
    func comments
    :return:
    """

方法二:使用pass占位;

def case_demo2():
    pass

# 传参方法

位置传参 数量与位置都必须与定义时一致,否则会报错

get_money("程序员") # 例如左侧,少传参数,报错

get_money(100, "程序员") # 例如左侧,参数位置不对,会造成函数结果有误

def demo(name, job):
    print(f"{name} is a {job}")


demo("程序员")  # TypeError: demo() missing 1 required positional argument: 'job'

demo(100, "程序员")  # 100 is a 程序员

关键字传参 使用形式参数的名字确定输入的参数值,不需要与形式参数的位置完全一致

get_money(job="老师", money=50)

def demo(name, job):
    print(f"{name} is a {job}")


demo(job="teacher", name="marry")  # marry is a teacher

# 为参数设置默认值

定义函数时可以指定形式参数的默认值,指定默认值的形式参数必须放在所有参数的最后,否则会报错;

def show_price(product, style="$", price="暂时保密"):  # 形参style和price写在最后,"$" "暂时保密"为形式参数的默认值,默认值要用不可变对象,否则会随着调用发生变化
    print(f"{product}的价格 {style}{price}")


show_price(product="红茶")  # 红茶的价格 $暂时保密  当不给style、price传入值时,函数会使用默认值  
show_price(product="绿茶", style="¥", price=3)  # 绿茶的价格 ¥3  当给style、price传入值时,函数会使用传入值

# 函数返回值

def sum_0(a, b):
    a + b


print(sum_0(1, 2))  # None 当函数中没有输出时,函数的调用结果是看不到的,函数调用完成后返回为None


def sum_1(a, b):
    return a + b  # 如果需要函数的调用结果做其他操作时,使用return将调用结果返回


print(sum_1(1, 2))  # 3 这时再打印出来就是函数的调用结果了

# 可变参数

可变参数也称为不定长参数,传入函数中的参数可以是任意多个,常见的可变参数一般写作: *args, **kwargs 

*arg: 接收任意多的实际参数,并将其放入一个元组中;

def demo(args):
    print(f"word{args}")


word = "a", "b", "c"
demo(word)  # word('a', 'b', 'c')

**kwargs: 接收任意多个关键字参数一样显式赋值的实际参数,并将其放到一个字典中,使用已经存在的字典作为参数时,在字典名称前加**

def demo(**kwargs):
    print(kwargs)


demo(weather="sunny", temperature=20)  # {'weather': 'sunny', 'temperature': 20}
dict_1 = {"key": "value"}
demo(**dict_1)  # {'key': 'value'}

# 匿名函数

没有名字的函数,用lambda表达式创建匿名函数 使用场景: 需要一个函数,但是又不想费神去命名这个函数,通常在这个函数只使用一次的场景下,可以指定短小的回调函数

result:调用 lambda 表达式

[arg1 [, arg2, …. , argn]]:可选,指定要传递的参数列表

expression:必选,指定一个实现具体功能的表达式,只能是具体表达式不支持for,if等

例1 计算圆面积

一般写法

def get_area(r):
    area = math.pi * r ** 2
    return area


print(f"半径为2的圆面积为{get_area(2)}")

lambda写法

area = lambda r: math.pi * r ** 2
print(f"半径为2的圆面积为{area(2)}")

例2 排序

book_info = [("python信息", 10), ("java知识", 20), ("php讲解", 5)]

book_info.sort(key=lambda x: x[1])
print(book_info)  # [('php讲解', 5), ('python信息', 10), ('java知识', 20)]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值