打好函数基础,让代码不在无限月读


前言

函数是一段有名字的代码块,用于执行特定的任务。函数可以接受输入参数,执行操作,并返回输出结果。函数可以重复使用,并且可以提高代码的可读性和维护性。

函数的目的是为了封装特定的功能或任务,以便在需要时可以重复调用。

函数的声明是指在函数体之前的函数名称、参数列表和返回类型的描述。

实参是在函数调用过程中传递给函数的实际值。在函数定义时,形参用来指定函数可以接受的参数类型和个数,而在函数调用时,实参就是具体传递给函数的值。

指定参数类型都有助于确保函数在调用时接收正确类型的参数,以提高程序的健壮性和可靠性。

匿名函数的运用可以使代码更加简洁、灵活,并且减少定义不必要的函数名称,提高代码的可读性和维护性。


一、函数的目的和定义

1.函数的目的

函数的目的是为了封装特定的功能或任务,以便在需要时可以重复调用。函数可以接受输入参数,并根据这些参数执行特定的操作,并返回一个输出结果。通过使用函数,我们可以将复杂的问题划分为更小的模块,使代码更加模块化、可维护和可重用。函数可以提高代码的可读性,避免重复的代码,并使程序更简洁和高效。

2.函数的定义

定义一个函数通常需要使用以下格式:

def 函数名(参数1, 参数2, ...):
    函数体
    return 返回值
# 函数名可以自行定义,但最好是有一定意义的函数名

其中,def关键字用来定义函数,紧接着是函数名,然后是一对圆括号,括号内可以包含多个参数,多个参数之间用逗号分隔。函数体是函数的具体实现代码,可以包含多条语句,需要使用缩进来表示代码块。函数体中可以使用return关键字来返回函数的结果,也可以没有return语句。

二、函数的声明和调用

1.函数的声明

函数的声明是指在函数体之前的函数名称、参数列表和返回类型的描述。函数声明主要用于告诉编译器函数的存在和函数的类型,以便在需要调用函数时能够正确使用和链接函数。函数声明的语法通常包括函数的返回类型、函数名称和参数列表。例如,下面是一个函数声明的示例:

int add(int a, int b);

在这个例子中,函数的返回类型是int,函数的名称是add,函数的参数列表是两个int类型的参数a和b。函数声明一般放在函数的定义之前进行,这样在其他代码中调用函数时就可以通过函数声明来引用函数。

 

2.函数的调用

函数的调用是指使用函数的名称来执行函数的代码。调用函数时,需要在函数名称后面加上一对括号,括号中可以传递给函数的参数。

 def():

 def hello():
     '''
     在此写注释 来说明函数的用法
     :return:
     '''
     for i in range(10):
         print(f'你好')


# 调用该函数
hello()

# 函数名可以自行定义

三,函数的形参和实参

1.形参

形参是指在函数定义中声明的参数,用于接收调用函数时传递的实参。形参用于在函数内部进行操作和计算,并可以在函数内部修改其值。形参的名称在函数定义中可以任意起名,但调用函数时必须传递相应的实参进行匹配。形参的个数和类型可以根据函数定义的需要而定。形参的作用是允许函数在被调用时接收和处理外部传递的数据。

 def hello(name, num):# 括号内的就是形参,在后续运算中可以用它
     '''
     打印你好
     :return:
     '''
     # name = '你好'
     for i in range(num):
         print(f'{name},起床上课啦')


 # 使用该声明的函数
 hello('你好', 5)

2.实参

实参是在函数调用过程中传递给函数的实际值。在函数定义时,形参用来指定函数可以接受的参数类型和个数,而在函数调用时,实参就是具体传递给函数的值。实参可以是常量、变量、表达式或函数等。当函数被调用时,实参的值会被赋给对应的形参,然后函数就可以使用这些值进行操作。实参的数量和类型必须与形参的数量和类型相匹配,否则会导致编译错误或运行时错误。

 def hello(name, num):
     '''
     打印你好
     :return:
     '''
     # name = '你好'
     for i in range(num):
         print(f'{name},起床上课啦')


 # 使用该声明的函数
 hello('你好', 5)# 实参,标明把'你好'赋值给name,5赋值给num

四,函数的参数类型

(1)位置参数

位置参数是指在定义函数时,参数的顺序必须与调用函数时传递的参数的顺序一致。当调用函数时,必须按照定义函数时参数的顺序进行传递,否则会发生错误。位置参数是函数定义中最普通的参数类型

例:以下函数定义了两个位置参数x和y:

在调用这个函数时,必须按照参数的位置传递数值

在这个例子中,3和5分别传递给了函数的第一个和第二个位置参数x和y,函数会返回8。

def add(x, y):
    return x + y
add(10,20)
 # 把10,20分别赋予x,y

(2)默认参数

默认参数是在定义函数时给参数一个默认值,当调用函数时,如果没有传递该参数的值,函数会使用默认值进行处理。默认参数可以简化函数的调用,避免频繁传递相同的参数值。

def wake_up(name, n=1, info='起床锻炼'):
    # 默认形参变量只能放在不默认的后面
    
        for i in range(n):
        
            print(f'{name},wake up,{info}')
    

wake_up('小王', 5, '元神启动')

在上面的例子中,wake_up 函数定义了三个参数,name,n和info,其中n有一个默认值1。当调用wake_up 函数时,如果不传递n参数,将使用默认值1;如果传递了n参数,将使用传递的值。这里传递了n=5。

(3)关键字参数

关键字参数是一种在调用函数时指定参数的方式,通过关键字进行参数的匹配,而不是按照位置进行参数的传递。使用关键字参数可以避免参数位置的混淆,提高代码的可读性。

在函数定义时,可以使用关键字参数来指定默认值。

在函数调用时,可以使用关键字参数来明确指定参数的值,而不必按照参数的顺序来传递。

例如,定义一个计算矩形面积的函数:

def calculate_area(length, width):
    return length * width

使用关键字参数调用函数:

calculate_area(length=10, width=5)

关键字参数可以不按照函数定义的顺序进行传递,并且可以只传递部分参数,未指定的参数将使用默认值。

例如,定义一个打印个人信息的函数:

def print_info(name, age, city="Beijing"):
    print("Name:", name)
    print("Age:", age)
    print("City:", city)

使用关键字参数调用函数:

print_info(age=20, name="Alice")

这样可以清晰地表达出函数参数的含义,提高代码的可读性和可维护性。

(4)*args 可变元组参数

*args是一个特殊的语法,可以在函数定义中接收任意数量的位置参数。它会将传入的参数打包成一个元组,供函数内部使用。

下面是一个简单的示例:

def print_args(*args):
    for arg in args:
        print(arg)

print_args(1, 2, 3)

输出:

1
2
3

在这个例子中,*args可以接受任意数量的位置参数,并将它们打包成一个元组(1, 2, 3)。函数内部使用for循环遍历这个元组并打印每个元素。

(5)**kwargs 字典参数

**kwargs参数是Python函数中的一种特殊参数,它允许函数接受任意数量的关键字参数。在函数内部,**kwargs参数会将这些关键字参数转换为一个字典形式的变量,可以通过字典的键值对来访问和操作这些参数。

使用**kwargs参数的语法如下:

def func_name(**kwargs):
    # function body

在调用函数时,可以通过键值对的形式传递关键字参数。这些关键字参数会被转换为字典形式的变量,传递给函数中的**kwargs参数。在函数内部,可以通过字典的键值对来访问和操作这些参数。

func_name(arg1=value1, arg2=value2, ...)

以下是一个示例,演示了如何使用**kwargs参数:

def print_values(**kwargs):
    for key, value in kwargs.items():
        print(key, value)

print_values(name='Alice', age=25, city='New York')

输出结果:

name Alice
age 25
city New York

(6)函数返回值

函数的返回值是函数执行完毕后所返回的结果。在函数内部使用return语句可以将一个值返回给函数的调用者。调用函数时可以将返回值保存在一个变量中,或者直接使用返回值进行其他操作。返回值可以是任意数据类型,包括数字、字符串、列表、字典等。如果函数没有使用return语句返回值,则默认返回None。

注意!!!!!函数中出现return不仅会打断循环,也会把函数中断

五,匿名函数

匿名函数是一种没有名称的函数,它可以在需要函数的地方被直接使用,而不必定义一个具体的函数名称。匿名函数通常用于简单的逻辑操作或者作为参数传递给其他函数。

匿名函数的运用包括:

  1. 作为参数传递给其他函数:匿名函数可以作为参数传递给其他函数,用于在函数内部执行一些逻辑操作。这样可以避免定义一个具体的函数名称,使代码更加简洁。

  2. 使用lambda表达式创建匿名函数:在Python中,可以使用lambda关键字来创建匿名函数。lambda表达式的语法为:lambda 参数: 表达式。通过lambda表达式可以快速创建简单的匿名函数。

  3. 函数式编程中的高阶函数:匿名函数在函数式编程中非常常见,它可以使函数更加灵活。通过将匿名函数作为参数传递给高阶函数,可以实现更加复杂的逻辑操作,如map、reduce和filter等。

总之,匿名函数的运用可以使代码更加简洁、灵活,并且减少定义不必要的函数名称,提高代码的可读性和维护性。

总结

函数的作用主要是封装可重复使用的代码,提高代码的复用性和可维护性。通过定义函数,可以将一段代码逻辑封装起来,然后在需要的时候调用函数来执行这段代码,避免了重复编写相同的代码。函数可以接收输入参数,并返回输出结果,可以通过参数来控制函数的行为,通过返回值来获取函数的结果。函数的作用还包括:

正确熟练的利用函数,可以提高编程效率,提供程序的复用!

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值