python——函数

1.定义函数

函数:开发程序过程中,为提高编写代码效率及代码的可重用,将具有独立功能的代码块组织成为一个个小模块,称之为函数

1.1 基本规则

def <函数名>(参数(0个或多个)):
    
    '''函数体'''
    
    return <返回值>

  • -定义一个则函数需要使用关键字def,后面紧跟函数名和括号括起的参数列表,且后面要以冒号’结尾。
  • 自定义的函数名由字母,下划线和数字组成,但不能以数字开头。
  • 括号中的参数和return根据需要使用,可以有也可以没有。

1.2 函数调用

在python中函数必须要先定义才能使用,函数调用直接使用函数名并在小括号中写入实参即可,如下例:

def favorite_book(book_1): #函数名
    '''函数体'''
    print(f'one of my favorite books is {book_1.title()}')

favorite_book('Of human bondage')

在这里插入图片描述加粗样式
前三行即为此函数的函数体,而第四行为函数的调用,并传递了一个’of human bandage’的实参。

2.传递实参

函数定义中可能包含多个形参,因此函数调用时也可能包含多个实参,向函数传递实参的方法又很多,可使用位置传参,也可使用关键字实参,还可使用列表和字典,下面依次介绍这些方式。

2.1 位置实参

在python中基于实参的顺序的关联函数形参的关联方式称为位置实参。也是最为简单的关联方式。如下例:

def favorite_book(book_1,author_2): #设置book_1(书名)和author_2(作者)两个形参
    print(f'one of my favorite books is {book_1.title()} written by {author_2.title()}')

favorite_book('Of human bondage','Maugham')

在这里插入图片描述

  • 可以多次调用函数,每次调用传入不同的实参
  • 根据位置实参时需要注意实参位置要和函数定义中的形参一一对应,按照顺序传参。

2.2 关键字实参

关键字实参是传递给函数的名称值对。可以不用考虑实参的顺序问题,直接在实参中将名称与值关联起来。如下例:

def favorite_book(book_1,author_2): #设置book_1(书名)和author_2(作者)两个形参
    print(f'one of my favorite books is {book_1.title()} written by {author_2}')

favorite_book(book_1='Of human bondage',author_2='Maugham')

在这里插入图片描述
由结果看两种传参结果一致结果一致。

2.3 参数默认值

在编写函数时可以给形参设置默认值,这样就可以在函数调用时使用更少的实参。设置参数(函数定义的形参)时必选参数(必须传入实参的的参数)在前,默认参数在后。如下例:

def my_pet(name_2,pet_1='cat'): #设置pet_1(动物名)和name_2(名字)两个形参
    print(f'I have a {pet_1.title()} named {name_2}')

my_pet('black')

在这里插入图片描述

3.返回值

函数并非总是直接显示输出,他还可以处理一系列数据并返回一个或者一组值,包括列表和字典。

def city_country(city_name,country_name): #返回简单值
    names = f'{city_name},{country_name}'
    return names

def make_album(singer_name,album_name):#返回字典
    album = {'singer':singer_name,'album_1':album_name}
    return album

message1 = city_country('beiing','china')
print(message1)

message2 = make_album('meimei','caroline')
print(message2)

在这里插入图片描述

4.传递列表

我们经常会发现,向函数传递列表很有用,讲课列表传入给函数后,函数就能直接访问其内容。下面使用函数

def greer_name(names): #形参为存储名字的names列表
    for name in names: #for遍历列表打招呼
        print(f'hello,{name.title()}')
names = ['mike','jim','alice']
greer_name(names)

在这里插入图片描述

4.1 在函数中修改列表

将列表传给函数后,函数就可对其进行修改,下例就是一个通过函数对列表进行修改的例子。

def show_message(messages): #便历列表
    for message in messages:
        print(message)

def send_message(print_messages,showed_messages):
    while print_messages: #打印print_messages列表的值
        printed_message = print_messages.pop() #打印一个prinrt_messages列表删去打印完的元素
        print(f'printed message {printed_message}')
        showed_messages.append(printed_message) #showed_messages列表添加已经打印完的列表)
    show_message(showed_messages)

printed_messages = ['hot summer days','rock and roll']
showed_messages = []
print(f'printed_messages is {printed_messages}')
send_message(printed_messages,showed_messages)

在这里插入图片描述

4.2 禁止函数修改列表

有时我们需要禁止函数修改列表,如前面的例子我们在发送消息后需要保留原来需要发送消息的列表,但我们发送下消息后的print_messages列表已经边为空。为解决这个问题,我们就可以向函数传递列表的副本而非原件,即使用切片

函数名(列表名[:]#切片表示格式
send_message(printed_messages[:],showed_messages) #将printed_messages列表切片
print(f'printed_messages is {printed_messages}')

在这里插入图片描述
结果如上图,使用副本后,原列表值不变。

5. 传递元组

预先不知道函数需要多少个实参,此时我们可以用(*)的参数名来让python创建空元组来存放收到的实参。如下例:

def make_cake(*ingredients):
    print(ingredients) #打印顾客需要的食材
make_cake('apple')
make_cake('chocolate','banana','Yellow peach')

在这里插入图片描述

6. 传递字典

有时我们需要接受任意数量的实参,但预先不知道它要传递的信息,这种情况下我们可将函数编写成能够接受任意数量的键值对

def car_information(color,brand,**car_database): #汽车信息储存函数
    car_database['c_color'] = color
    car_database['c_brand'] = brand
    return car_database
user_car = car_information('blue','Benz',model='G500')
print(user_car)

本文参考书目:Python 编程 :从入门到实践 (第二版)/ (美) 埃里克•马瑟斯(Eric Matthes)著;袁国忠译

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值