Python基础(27)–Python函数的概述、定义和调用

◎知识点

  1. 函数的概述

  2. 为什么需要函数?

  3. 函数的定义和调用


◎脚本练习

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
 @FileName:    function_def.py
 @Function:    python function definition
 @Author:      Zhihe An
 @Site:        https://chegva.com
 @Time:        2021/7/4
"""

"""一、函数的概述"""

"""
1、什么是函数?
    简单地说,函数就是个黑匣子,它接收输入(参数),然后执行特定任务以完成特定功能,最后生成输出(返回值),
    其中,输入(参数)和输出(返回值)都是可选的,也就是说,可以有也可以没有。
    函数就是执行特定任务以完成特定功能的一段代码。可以在程序中将某段代码定义成函数,并指定一个
    函数名及接收的输入(参数),这样,就可以在程序的其它地方通过函数名多次调用并执行该段代码了
    每次调用并执行后,都会根据接收的输入(参数)执行特定任务以完成特定功能从而生成相应的输出(返回值)
    python语言已经定义了很多内置函数。我们可以在程序中通过函数名直接调用这些内置函数。
    例如:当我们调用内置函数id()时,输入(参数)是任意的对象,完成的特定功能是获取输入(参数)的唯一标识,
    输出(返回值)是输入(参数)的唯一标识
"""

# 第1次调用内置函数id(),输入(参数)是一个整数类型的对象
print(id(18))

# 第2次调用内置函数id(),输入(参数)是一个字符串类型的对象
print(id('Hello'))

# 第3次调用内置函数id(),输入(参数)是一个列表类型的对象
print(id([1, 2, 3]))


"""二、为什么需要函数?"""

"""
1、复用代码
    如果在程序中需要多次完成某个特定的功能,我们无需把这个特定功能的相关代码在多个地方编写多次,
    完全可以把这个特定功能的相关代码定义成函数,然后在多个地方调用该函数,每次调用都会把函数对应的
    相关代码执行一遍
    
2、隐藏实现细节
    函数就是个黑匣子,将实现细节隐藏起来了。很多时候我们无需关注函数的实现细节,只需关注其接收
    的输入(参数)及生成的输出(返回值)就可以了
    
3、提高可维护性
    把完成某段特定功能的代码定义为函数后,如果需要对这段代码进行修改,只需要在一个地方进行修改,
    提高了程序的可维护性。否则,你需要找到这段代码的多个不同地方,每个地方都要进行同样的修改,
    费时费力还容易出错

4、提高可读性、便于调试
    每个函数都对应一段完成特定功能代码,提高了程序的可读性,也便于程序调试
"""

"""三、函数的定义和调用"""

"""
1、定义函数
定义函数的语法格式:
    def 函数名([形式参数1, 形式参数2, ..., 形式参数n]):
        函数体
    其中,def是python定义的关键字

关于函数名的说明:
    (1) 每个函数都有一个函数名,用于函数的调用
    (2) 函数名属于标识符,因此,必须遵守标识符的命名规划,推荐遵守标识符的命名规范。此外,函数名
    最好是动宾格式,以表明函数完成的特定功能,例如:handle_message、print_result

关于形式参数的说明:
    (1) 形式参数简称形参
    (2) 形参用于调用参数时接收输入,也就是接收传递的实际参数(简称实参)
    (3) 形参用中括号起来,表示形参是可选的,也就是说,可以定义也可以不定义
    (4) 形参的本质是变量,其作用域(起作用的范围)仅限于函数体
    
关于函数体的说明:
    (1) 函数体是用于执行特定任务以完成特定功能的主体代码
    (2) 函数体对应的代码块必须缩进
    (3) 如果函数需要有输出(返回值),可以在函数体内通过语句return xxx进行返回,同时结束函数体的
    执行。如果函数不需要有输出(返回值),可以在函数体内通过语句return直接结束函数体的执行,或者让
    函数体正常执行结束,其实,函数在这两种情况下都是有返回值的,其返回值都是None
    (4) 函数体在调用函数时才会被执行,因此,定义函数不会改变程序的执行流程
"""

def decide_args(arg1, arg2):
    if arg1 and arg2:
        return arg1, arg2
    elif (not arg1) and (not arg2):
        return
    else:
        result = arg1 or arg2

"""
    定义函数后,就创建了一个函数对象,它的类型是function
"""

print(decide_args)  # <function decide_args at 0x10b1381f0>
print(type(decide_args))    # <class 'function'>

"""
2、调用函数
    调用函数时,每个实参都被用于初始化相应的形参。所有形参都被初始化之后,函数体对应的代码块
    被执行。程序的执行流会跳转到定义函数的函数体内,执行函数体对应的代码块,执行完函数体后再跳回到
    调用函数的地方,继续执行下一条语句
"""

print(decide_args(18, 'Hello')) # (18, 'Hello')

print(decide_args([], {})) # None

print(decide_args(18, [])) # None

▽ 定义函数

Python基础(27)--Python函数的概述、定义和调用

▽ 实参初始化形参

Python基础(27)--Python函数的概述、定义和调用

▽ 调用函数的执行流程

Python基础(27)--Python函数的概述、定义和调用

◎脚本地址:https://github.com/anzhihe/learning/blob/master/python/practise/learn-python/python_basic/function_def.py

anzhihe安志合个人博客,版权所有丨 如未注明,均为原创 丨转载请注明转自:https://chegva.com/4855.html | ☆★★每天进步一点点,加油!★★☆

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注