[python编程:从入门到实践笔记]函数

函数是带名字的代码块,用于完成具体的工作。 要执行函数定义的特定任务,可调用该函数。需要在程序中多次执行同一项任务时,无需反复编写完成该任务的代码,而只需调用执行该任务的函数,让Python运行其中的代码。通过使用函数,程序的编写、阅读、测试和修复都将更容易。

目录

一、定义函数 

二、传递实参

1、位置实参

2、关键字实参

3、默认值

三、返回值

1、返回简单值

2、让实参变成可选的

3、返回字典

四、传递列表


一、定义函数 

下面先展示一个简单的函数结构:

def greet_user():
    """显示简单的问候语"""
    print("hi")

greet_user()
  • 第一行的代码使用关键字def表示定义的是一个函数,greet_user()是函数名(函数名可能在括号内指出函数为了完成任务需要什么样的信息),该函数不需要任何的额外信息就可以完成它的任务,因此括号内是空的。另外,定义函数需要以冒号结尾。
  • 第二行的注释,使用三引号括起来,用来描述函数做了什么。
  • 代码行print("hi")是函数体内的唯一一行代码,greet_user()只做一项工作: 打印hi。
  • 要调用函数,可依次指定函数名以及用括号括起的必要信息,如最后一行代码所示,由于这个函数不需要任何信息,因此调用它时只需输入greet_user()即可。

二、传递实参

函数定义种可能包含多个实参,因此函数调用中也有可能有多个形参。向函数传递实参的方式很多,可以使用位置实参,这要求实参的顺序与形参的顺序相同;也可使用关键字实参,其中每个实参都由变量名和值组成;还可使用列表和字典。下面来依次介绍这些方式。

1、位置实参

调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此, 最简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参。如下面的例子所示:

def introduce_myself(name,age):
    """"打印自己的姓名和年龄"""
    print("\n My name is "+ name +".")
    print("I am "+ age + " years old.")


introduce_myself('wt',"20")

 得到的结果为:

My name is wt.
I am 20 years old.

调用introduce_myself()时,需要按顺序提供名字和年龄,位置反了就不对了。此外,可以根据需要调用多次。

2、关键字实参

关键字实参是传递给函数的名称-值对,如下所示:

def describe_myself(name,age):
    """"打印自己的姓名和年龄"""
    print("\nMy name is "+ name +".")
    print("I am "+ age + " years old.")


describe_myself(name='wt',age="20")
describe_myself(age="18",name="wj")

  得到的结果如下所示:

My name is wt.
I am 20 years old.

My name is wj.
I am 18 years old.

由上面的例子可以看出在关键字实参中,只要关键字正确,实参的顺序无关紧要。

3、默认值

编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,Python将使用 指定的实参值;否则,将使用形参的默认值。如下:

def describe_myself(name,age="20"):
    """"打印自己的姓名和年龄"""
    print("\nMy name is "+ name +".")
    print("I am "+ age + " years old.")


describe_myself(name='wt')
describe_myself(age="18",name="wj")

得到的结果为:

My name is wt.
I am 20 years old.

My name is wj.
I am 18 years old.

正如上面的例子所示,如果没有提供age实参,将返回默认值,如果重新设置了age的参数,则返回设定的值。

三、返回值

函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回 的值被称为返回值。在函数中,可使用return语句将值返回到调用函数的代码行。

1、返回简单值

下面先来看一个简单的例子:

def get_formatted_name(first_name,last_name):
    """返回整洁的姓名"""
    full_name = first_name +' ' + last_name
    return full_name.title()

user = get_formatted_name("xiao","ming")
print(user)

输出的结果为:

Xiao Ming

2、让实参变成可选的

有时候,需要让实参变成可选的,这样使用函数就只需要在必要时提供额外的信息。可以使用默认值让实参变成可选的。下面将函数get_formatted_name()进行扩展,使得该函数可以处理中间名,如下:

def get_formatted_name(first_name,last_name,middle_name = ""):
    """返回整洁的姓名"""
    if middle_name:
        full_name = first_name + " " + middle_name+ ' ' + last_name
    else:
        full_name = first_name + ' ' + last_name
    return full_name.title()

user1 = get_formatted_name("xiao","ming")
user2 = get_formatted_name("wang","xiao","hua")

输出的结果为:

user1:Xiao Ming
user2:Wang Hua Xiao

为了让实参变成可选的,可以将该实参设置为空字符串,并将其放在最后。

3、返回字典

函数可以返回任意类型的值,包括列表和字典等比较复杂的数据结构。如下:

def get_formatted_name(first_name,last_name,middle_name = ""):
    """返回一个字典,其中包含一个人的信息"""
    person = {"first":first_name,'last':last_name}
    return  person


user1 = get_formatted_name("xiao","ming")
print(f"user1:{user1}")

输出的结果为:

user1:{'first': 'xiao', 'last': 'ming'}

四、传递列表

通常情况下,还可以给函数传递列表,列表中可以包含名字、数字或者更复杂的对象(如字典)。将列表传递给数字后,函数就能直接访问其内容。下面列举一个简单的例子:

def greet_users(names):
    """向列表中的每位用户都发出简单的问候"""
    for name in names:
        msg = "Hello," + name.title() + "!"
        print(msg)

usernames = ['mvkf','jvuhv','jush']
greet_users(usernames)

输出后的结果为:

Hello,Mvkf!
Hello,Jvuhv!
Hello,Jush!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值