目录

一、函数签名的定义与组成部分

函数签名就像是一个函数的身份证,它包含了函数的名字、参数以及返回值类型等关键信息,让程序员和计算机都能快速了解这个函数是干什么的、需要什么输入、会输出什么结果。

函数是什么

  1. 定义

    • 数学中的函数:给定一个输入值(如 x),通过特定的规则或公式计算出一个输出值(如 y)。例如,y = 2x + 1,当输入 x 为 3 时,输出 y 为 7。
    • 编码中的函数:类似于数学函数,它接受一些输入(称为参数),按照设定的逻辑进行处理,然后返回一个结果。例如,一个函数可能接受两个数字作为输入,然后返回它们的和。
  2. 作用

    • 在数学中,函数简化了复杂的计算过程。
    • 在编码中,函数用来组织代码,使程序更易于理解和维护。它可以重复使用,避免重复编写相同的逻辑。
  3. 例子对比

    • 数学f(x) = x^2,输入 x=4,输出 16。

    • 编码(以 Python 为例):

      def square(x):
          return x * x
      
      result = square(4)
      print(result)  # 输出 16
      

      其中square函数接受一个参数 x,并返回 x 的平方。

  4. 扩展性

    • 数学函数通常只处理数值。
    • 编码中的函数可以处理各种类型的数据,比如文字、列表、对象等,甚至可以没有输入或输出。

总结来说,编码中的函数就像一个“小机器”,你给它一些原料(输入),它按照设定的规则加工后,给你一个成品(输出)。

函数名

函数名是函数的称呼,它简洁地表达了函数的主要功能,比如一个用于计算两个数之和的函数可能会被命名为add,看到这个名字就能大概猜到这个函数是用来做加法运算的。

参数

参数是函数在执行时需要的外部输入,它们是函数完成特定任务所必需的数据。参数包括参数名和参数类型。

  • 参数名

    就像是给输入的数据起的别名,方便在函数内部引用这些数据,例如在add函数中可能会有参数ab,分别代表要相加的两个数。

  • 参数类型

    规定了参数的数据类型,比如整数、浮点数、字符串等。这有助于确保传入的数据是函数能够正确处理的格式,避免出现类型错误导致程序出错。例如,如果一个函数的参数类型是整数,而你传入了一个字符串,程序在运行时可能会报错。

返回值类型

返回值类型指定了函数执行完毕后输出结果的数据类型。它告诉调用者函数会返回什么样的数据,方便调用者后续对返回值进行处理。例如,add函数的返回值类型可能是整数,因为两个整数相加的结果还是整数。

二、结构化提示词映射函数签名及任务

首先我们将 AI 要生成的代码当做一个黑盒。黑盒就类似一个函数,会有一头的输入和另一头的输出,中间黑盒是代码逻辑,对输入数据进行多个步骤的处理,最终得到一个或多个要输出的数据,这个数据就是我们需要想要的结果。

我们可以将这个黑盒当做代码中的函数。

为了让 AI 准确理解你的需求并编写出符合要求的代码,你需要提供一个结构化的提示词,将函数签名的各个部分以及函数要执行的任务步骤清晰地描述出来。

描述函数功能

用简洁明了的语言说明函数要实现什么功能,例如“编写一个函数,用于计算两个数的和”。

指定函数签名

根据函数功能,推测并描述出函数的签名。

  • 函数名 :根据功能描述,给函数起一个合适的名字,比如“add”。
  • 参数 :明确函数需要哪些参数,包括参数名和参数类型。例如,“参数为两个整数 a 和 b”。
  • 返回值类型 :说明函数返回值的类型,例如“返回值为一个整数,表示两个数的和”。

阐述任务步骤

详细描述函数内部要执行的操作步骤,让 AI 清楚函数的逻辑流程。例如,“在函数内部,将参数 a 和 b 相加,然后将结果返回”。

三、示例:让 AI 编写简单功能函数的提示词

假设我们要编写一个函数,用于计算一个数的平方。

提示词

“请帮我编写一个函数,功能是计算一个数的平方。函数名为 square,参数是一个整数 num,返回值是一个整数,表示 num 的平方。函数内部的操作步骤是:将参数 num 与自身相乘,得到结果后返回。”

如果要写一个完整可执行的 python 代码,可以这样写:

“请帮我编写可执行完整 python 代码,包含 main 入口,功能是计算一个数的平方。函数名为 square,参数是一个整数 num,返回值是一个整数,表示 num 的平方。函数内部的操作步骤是:将参数 num 与自身相乘,得到结果后返回。”

四、AI 辅助编码的提示词模板

“请帮我编写一个函数,功能是 [简要描述函数功能]。函数名为 [函数名]。参数包括 [参数 1 名](类型为 [参数 1 类型])、[参数 2 名](类型为 [参数 2 类型])……。返回值类型为 [返回值类型]。函数内部的操作步骤如下:[详细描述函数要执行的每一步操作]。”

五、代码提示词表单

有了模板,就可以采用结构化表单填充的方式,快速地填写好函数签名和任务步骤描述,让 AI 辅助编写符合要求的函数代码。勤快的平台已经制作了模板,调教好了一个函数代码的提示词对话。我们比较懒。

给个表单定义:

  • 简述功能。描述你要完成什么任务,浓缩成一个标题,方便 AI 根据标签来定义函数或模块名称。
  • 输入。描述你提供的数据,可以追加多个数据,并选择数据类型,让 AI 知道如何定义入参。
  • 返回值。描述你想要得到的数据,并选择数据类型,让 AI 知道如何定义出参。
  • 步骤。描述函数内部要执行的操作步骤,可以追加多个步骤,让 AI 清楚函数的逻辑流程。

范例:

你的一名出色的python工程师,请按照以下描述编写出完善可执行的代码,包含main入口。并确保代码符合PEP8规范及安全。
简述功能:简易计算器,支持加减乘除
输入:
- a:整数
- b:整数
- operator:整数,运算符(+、-、*、/)

输出:
- result:整数
步骤:
1. 根据 operator 的值,选择对应的运算方式,并计算结果。

代码生成:

def add(a, b):
    """返回两个数的和"""
    return a + b


def subtract(a, b):
    """返回两个数的差"""
    return a - b


def multiply(a, b):
    """返回两个数的积"""
    return a * b


def divide(a, b):
    """返回两个数的商,处理除以零的情况"""
    if b == 0:
        raise ValueError("除数不能为零")
    return a / b


def calculate(a, b, operator):
    """
    根据运算符执行相应的运算
    :param a: 整数
    :param b: 整数
    :param operator: 运算符(+、-、*、/)
    :return: 运算结果
    """
    operations = {
        '+': add,
        '-': subtract,
        '*': multiply,
        '/': divide
    }
    if operator not in operations:
        raise ValueError("无效的运算符,请使用 +、-、* 或 /")
    
    return operations[operator](a, b)


def main():
    try:
        a = int(input("请输入第一个整数 a: "))
        b = int(input("请输入第二个整数 b: "))
        operator = input("请输入运算符 (+、-、*、/): ")
        
        result = calculate(a, b, operator)
        print(f"结果:{result}")
    except ValueError as e:
        print(f"输入错误:{e}")


if __name__ == "__main__":
    main()

代码说明:

1、函数定义:定义了四个基本运算函数 add、subtract、multiply、divide。

2、运算选择:calculate 函数根据传入的运算符选择相应的运算函数进行计算。

3、异常处理:在 divide 函数中处理了除以零的情况,在 calculate 函数中处理了无效运算符的情况。

4、主函数:main 函数负责获取用户输入并调用 calculate 函数进行计算,同时捕获并处理可能的异常。

5、入口点:if name == “main":确保代码作为脚本运行时执行 main 函数。

这样设计的代码既符合 PEP8 规范,又保证了程序的安全性和健壮性。


通过以上对函数签名的解释、结构化提示词的映射以及示例和模板的提供,小白可以更好地理解如何让 AI 辅助编写功能代码,即使不懂计算机知识,也能通过清晰地描述需求,让 AI 准确地生成符合要求的函数代码。

重点:

  • 提供准确及足够的上下文。
  • 使用更牛逼的大模型。

9ong@TsingChan 文章内容由 AI 辅助生成。