python —— 函数

函数

就是把具有独立功能的代码块组织成一个小模块,在需要的时候调用

使用步骤:
1、定义函数 ——— 封装独立的功能
2、调用函数 ——— 享受封装的成果
3、函数的作用 ——— 在开发程序的时候,使用函数可以提高编写的效率以及代码的重用

1、定义函数格式:

def 函数名():
    函数封装的代码
    ......

def是define的缩写

函数名称应该能够表达函数封装代码的功能,方便后续的调用

函数名称的命名应该符合标识符的命名规则

2、函数调用:

通过函数名()即可完成对函数的调用

函数参数和返回值的作用

函数根据 有没有参数 以及 有没有返回值,可以相互组合:
1、无参数,无返回值
2、无参数,有返回值
3、有参数,无返回值
4、有参数,有返回值
在这里插入图片描述
定义函数时,是否接收参数,或者是否返回结果,是根据实际的功能需求来决定的

1、如果函数内部处理的数据不确定,就可以将外界的数据以参数传递到函数内部
2、如果希望一个函数执行完成后,向外界汇报执行结果,就可以增加函数的返回值

不可变和可变的参数
1、在函数内部,针对参数使用的赋值语句,不会影响调用函数时传递的 实参变量
2、无论传递的参数是可变还是不可变,只有针对参数使用赋值语句,会在函数内部修改局部变量的引用,不会影响到外部变量的引用
3、如果传递的参数是 可变类型,在函数内部,使用方法修改了数据的内容,通用会影响到外部的数据

def demo(num):
    print("函数内部的代码")

    # 在函数内部,针对参数使用赋值语句,不会修改到外部的实参变量
    num = 100
    num_list = [1,2,3]

    print(num)
    print(num_list)
    print("函数执行完成")


gl_num = 99
gl_list = [4,5,6]
demo(gl_num)
print(gl_num)

输出:
函数内部的代码
100
[1, 2, 3]
函数执行完成
99
def demo(num_list):

    print("函数内部的代码")

    # 使用方法修改列表的内容
    num_list.append(9)

    print(num_list)
    print("函数执行完成")

gl_list = [1,2,3]
demo(gl_list)
print(gl_list)

输出:
函数内部的代码
[1, 2, 3, 9]
函数执行完成
[1, 2, 3, 9]

缺省参数:
1、定义函数时,可以给某个参数 指定一个默认值,具有默认值的参数就叫做缺省参数
2、调用函数时,如果没有传入缺省参数的值,则在函数内部使用定义函数时指定的参数默认值
3、函数的缺省参数,将常见的值设置为参数的缺省值,从而简化函数的调用

缺省参数,需要使用最常见的值作为默认值
如果一个参数的值不能确定,这不应该设置默认值,具体的数值在调用函数时,由外界传递

缺省参数的注意事项:
(1)缺省参数的定义位置
必须保证带有默认值的缺省参数 在参数列表末尾
(2)调用带有多个缺省参数的函数

形参:形式参数,定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用
实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部用的

def greet_user(username):
    """显示简单的问候语"""
    print(f"Hello,{username.title()}!")

greet_user('jesse')
输出:
Hello,Jesse!

在函数greet_user()中,变量username是一个形参,即函数完成工作所需的信息。在代码greet_user(‘jesse’)中,值’jesse’是一个实参,即调用函数时传递给函数的信息。调用函数时,将要让函数使用的信息放在圆括号内。在greet_user(‘jesse’)中,将实参’jesse’传递给了函数greet_user(),这个值被赋给了形参username。

3、函数的返回值
一个函数执行结束后,告诉调用者一个结果

(1)返回简单值

def get_formatted_name(first_name,last_name):
    """返回整洁的姓名"""
    full_name = f"{first_name} {last_name}"
    return full_name.title()
musician = get_formatted_name('jimi','hendrix')
print(musician)
输出:
Jimi Hendrix

函数get_formatted_name()的定义通过形参接受名和姓,将名和姓合二为一,在中间加上一个空格,并将结果赋给变量full_name,然后,将full_name的值转换为首字母的大写格式,并将结果返回到函数调用行。

(2)返回字典
函数可以返回任何类型的值,包括列表和字典等较复杂的数据结构

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

musician = build_person('jimi','hendrix')
print(musician)

输出:
{'first': 'jimi', 'last': 'hendrix'}

函数build_person()接受名和姓,并将这些值放到字典中,存储first_name的值时,使用的键为‘first’,而存储last_name的值时,使用的键为‘last’。最后,返回表示人的整个字典,打印这个返回值时,此时原来的两项文本信息存储在一个字典中。

(3)结合使用函数和while循环

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

while True:
    print("\nPlease tell me your name:")
    print("(enter 'q' at any time to quit)")

    f_name = input("First name: ")
    if f_name == 'q':
        break

    l_name = input("Last name: ")
    if l_name == 'q':
        break

    formatted_name = get_formatted_name(f_name,l_name)
    print(f"\nHello,{formatted_name}!")

输出:
Please tell me your name:
(enter 'q' at any time to quit)
First name: eric
Last name: matthes

Hello,Eric Matthes!

Please tell me your name:
(enter 'q' at any time to quit)
First name: q

(4)传递列表

将列表传递给函数后,函数就能直接访问其内容。

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

usernames = ['hannah','ty','margot']
greet_users(usernames)

输出:
Hello,Hannah!
Hello,Ty!
Hello,Margot!

将greet_users()定义为接受一个名字列表,并将其赋给形参names。这个函数遍历收到的列表,并对其中的每位用户打印一条问候语。后面定义一个用户列表usernames,然后调用greet_users()并将该列表传递给它。

4、模块
模块是Python程序架构的一个核心概念
模块是扩展名为 .py 的文件

工作中针对需求的变化,不要轻易修改已经执行的函数
使用函数的优点之一就是可将代码块与主程序分离

函数编写时
1、每个函数都应包含简要地阐述其功能的注释
2、应给函数指定描述性名称,且旨在其中使用小写字母和下划线
3、给形参指定默认值时,等号两边不要有空格
4、PEP 8 建议代码行的长度不要超过79个字符
5、若程序或模块包含多个参数,可使用两个空行将相邻的函数分开
6、所有的import语句都应该放在开头

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

柯糖

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值