Python 函数

一、函数的概述

(一)函数的类别

通常我们使用的函数分为两大类:内置函数和自定义函数。

内置函数是在编程语言中已经预定义好的函数,可以直接调用,比如Python中的print()函数和len()函数。这些函数通常用于实现常见的任务,比如输出文本和计算数组长度。常用的内建函数如图所示。
在这里插入图片描述

 自定义函数是开发人员自行编写的函数。这些函数具有特定的功能,并可以通过调用来执行它们。自定义函数可以根据需要添加参数和返回值,以便满足程序员的要求。自定义函数可以增强代码的重用性,使得程序逻辑更加清晰明了。例如,在Python中,开发人员可以使用def关键字定义自己的函数。如下代码演示了自定义函数printme()的定义和调用过程。

# 自定义函数
def printme(str):
    "函数功能:打印传入的字符串"
    print(str)


# 调用自定义函数
printme("调用用户自定义函数!")
printme("再次调用用户自定义函数!")

输出结果:

调用用户自定义函数!
再次调用用户自定义函数!

(二)函数的定义

在Python语言中,函数通常是由函数名、参数列表以及一系列语句组成的函数体构成的。函数定义的一般格式如下:

def 函数名(参数列表):
    函数体
def age():
    print("我今年的年纪是:",26)

age()

注意:上述示例中age()函数虽然不包含任何参数,但是函数名后的一对括号不能省略的。在实际应用中,稍复杂的函数通常都会包含一个或多个参数。

二、形参与实参

(一)形参与实参的概述

函数定义时用的是形参调用时用的是实参。

  • 形参是函数定义时声明的变量,在函数内部用于接收传递进来的实参值。
  • 实参是在函数调用时传递给函数的值,它们可以是任何表达式或变量。
  • 形参和实参之间的关系是:函数定义时声明的形参用于接收函数调用时传递的实参值。

(二)示例

要求:计算一个半径为10的圆的面积

# 注释:首先直接采用公式计算求出正确值
area=3.14*10*10
print(area)

#使用函数

#构造函数area1:无参数,无返回值

def area1():
    print(3.14*10*10)

area1()


#构造函数area2:有参数,无返回值

def area2(r):
    print(3.14*r*r)

area2(10)


#构造函数area3:无参数,有返回值

def area3():
    return 3.14*10*10   #返回值

print(area3())


#构造函数area4:有参数,有返回值

def area4(r):
    return 3.14*r*r
print(area4(10))

(三)总结

返回值总结
#没有返回值,直接调用函数
#有返回值,将返回值当作一个值使用
参数值总结
#没有参数值,函数的功能是固定的,比如:计算半径为10的面积
#有参数值,函数更加灵活,比如:能计算更多半径的圆形面积

练习:计算边长为10的正方形的面积

#不使用函数直接计算
area=10*10
print(area)

#使用函数
#构造函数area1:无参数,无返回值

def area1():
    print(10*10)

area1()

#构造函数area2:有参数,无返回值

def area2(r):
    print(r*r)

area2(10)

#构造函数area3:无参数,有返回值

def area3():
    return 10*10

print(area3())


#构造函数area4:有参数,有返回值

def area4(r):
    return r*r

print(area4(10))

三、常见函数参数

(一)参数类型

  • 可变类型:类似c++的引用传递,如列表、字典等。如果传递的参数是可变类型,则在函数内部对传入参数的修改会影响到外部变量。
  • 不可变类型:类似c++的值传递,如整数、字符串、元组等。如果传递的参数是不可变类型,则在函数内部对传入参数的修改不会影响到外部变量。

(二)位置参数

位置参数是一种在函数定义中指定参数的方式。在此方法中,函数的参数根据其出现的位置进行匹配。例如,以下函数定义中,x 和 y 是位置参数:

def add(x, y):
    return x + y

在调用函数时,必须按相同的顺序提供参数:

result = add(2, 3)

在此示例中,2 被分配给 x,3 被分配给 y,add() 函数返回 5。如果位置参数的数量不正确,将引发 TypeError。

(三)默认参数

在Python中,函数可以使用默认参数。默认参数是在函数定义时指定的参数值,如果调用者没有提供该参数的值,则使用默认值。

以下是一个具有默认参数的函数示例:

def greet(name='world'):
    print('Hello,', name)

# 调用函数
greet()    # 输出:Hello, world
greet('Alice')    # 输出:Hello, Alice

在上面的示例中,greet()函数具有一个名为name的默认参数,其值为'world'。如果该函数没有传递任何参数,则使用默认值'world'。如果函数调用者传递了参数,则使用传递的参数值。

可以在定义函数时使用任意数量的默认参数。但是,必须确保在声明默认参数时,将它们放在其他参数的后面,例如:

def greet(greeting, name='world'):
    print(greeting, name)

# 调用函数
greet('Hello')    # 输出:Hello world
greet('Hi', 'Alice')    # 输出:Hi Alice

在上面的示例中,greeting参数是非默认参数,而name是默认参数。在定义时,需要先定义非默认参数,然后再定义默认参数。

(四)不定长参数

不定长参数是指函数的参数数量可以不确定,可以传递任意个参数。在 Python 中,可以通过在函数定义时使用 *args 和 **kwargs 来实现不定长参数。

*args 用于传递任意数量的位置参数,它将所有的位置参数收集到一个元组中。

**kwargs 用于传递任意数量的关键字参数,它将所有的关键字参数收集到一个字典中。

示例代码:

def func1(*args):
    print(args)

def func2(**kwargs):
    print(kwargs)

func1(1, 2, 3, 4)    # 输出:(1, 2, 3, 4)
func2(a=1, b=2, c=3) # 输出:{'a': 1, 'b': 2, 'c': 3}

可以看到,通过使用 *args 和 **kwargs,我们可以接受任意数量的参数,这在一些情况下会非常方便。

注意:
*表示不定长参数
**表示不定长的关键字参数

(五)关键字参数

关键字参数是指在函数调用时,通过指定参数名称来传递参数值的方式。在函数定义时,使用参数名称来定义函数,例如:

def my_func(name, age):
    print("My name is", name)
    print("I am", age, "years old")

在调用函数时,可以通过指定参数名称来传递参数值:

my_func(age=20, name="Tom")

这里,使用参数名称来传递参数值,使得可以更清晰地表达参数的含义。关键字参数还可以用来指定函数的默认值,例如:

def my_func(name, age=18):
    print("My name is", name)
    print("I am", age, "years old")

在调用函数时,如果不传递参数 age,则自动使用默认值,例如:

my_func(name="Tom")

注意参数定义是有顺序的。定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数


资料来源Python基础语法02:函数

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DXM0521

你的支持是我最大的幸运

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

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

打赏作者

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

抵扣说明:

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

余额充值