如何在 Python (例子)

⚡ 智能摘要

函数在 Python 是可重用的代码块,在被调用时运行,用 def 语句定义。它们接受参数和返回值,并依靠一致的缩进来对属于每个函数的语句进行分组。

  • 🧩 def 语句: 函数由 def、函数名和括号定义,后面跟着一个冒号,冒号表示缩进的语句块。
  • 📞 调用函数: 在函数名后跟括号即可运行其代码,因此相同的逻辑可以多次重复使用。
  • ⌨️ 缩进: Python 使用一致的缩进而不是花括号对函数体进行分组,因此缺少空格会引发 IndentationError。
  • 🎯 参数: 括号内传递的值将成为参数,默认值或关键字参数使每次调用都更加灵活。
  • ↩️ 返回值: return 语句会将结果返回给调用者;如果没有它,函数将返回 None。
  • 🤖 人工智能辅助: GitHub Copilot 等 AI 助手可以根据简短的提示生成函数框架、参数和文档字符串。

如何在 Python

什么是函数 Python?

A 功能 Python 是一段被引用时执行的代码。它用于在程序中的多个位置调用同一代码。它也称为方法或过程。 Python 它提供了许多内置函数,如 print()、input()、compile() 和 exec(),同时也赋予你创建自己的函数的自由。

如何定义和调用函数 Python

函数 Python 由“def”语句后跟函数名和括号(())定义。

计费示例:

让我们使用命令“def func1():”定义一个函数并调用它。该函数的输出将是“我正在学习”。 Python 功能”。

定义并调用函数 Python

函数调用 func1() 会执行我们定义的 func1() 函数,并打印命令“我正在学习”。 Python 函数为“无”。

有一套规则 Python 编程 定义一个函数。

  • 所有参数或输入参数都应放在这些括号内。
  • 函数的第一条语句可以是可选语句——即函数的文档字符串。
  • 每个函数内的代码都以冒号 (:) 开头,并且应该缩进(空格)。
  • `return (表达式)` 语句用于退出函数,并可选择将一个值返回给调用者。不带参数的 `return` 语句等同于 `return None`。

缩进(空格)的意义 Python

在我们熟悉之前 Python 函数,理解缩进规则对于声明 Python 函数,并且这些规则也适用于其他元素 Python 此外,还可以声明条件、循环或变量。

Python 遵循特定的缩进风格来定义代码。因为 Python 函数没有像花括号那样显式的开始或结束标记来指示函数的开始和结束,它们必须依靠缩进。这里我们以“print”命令为例。当我们在 `def func1():` 这行代码下方紧接着编写“print”函数时,会显示“缩进错误:需要一个缩进的代码块”。

定义并调用函数 Python

现在,当你在“print”函数前面添加缩进(空格)时,它应该就能按预期打印出来了。

定义并调用函数 Python

至少一个缩进足以保证代码正常运行。但最佳实践是,建议在调用函数时留出 3-4 个空格的缩进。

此外,在声明缩进时,必须确保代码其余部分保持相同的缩进。例如,在下面的截图中,当我们在 func1 中调用另一个语句时,如果它没有紧挨着第一个 print 语句声明,就会出现缩进错误:“取消缩进与任何其他缩进级别都不匹配”。

定义并调用函数 Python

现在,当我们对这两个语句应用相同的缩进并将它们对齐到同一行时,就能得到预期的输出结果。

定义并调用函数 Python

函数如何返回值?

返回命令 Python 指定要返回给函数调用者的值。让我们通过以下示例来理解这一点。

步骤 1)该函数不返回任何内容

这里我们看到函数不“返回”的情况。例如,我们想要计算 4 的平方,代码执行后应该返回“16”。如果我们直接使用“print x*x”代码,就能得到这个结果;但是,如果我们调用函数“print square”,输出却是“None”。这是因为调用函数时,递归并没有发生,程序直接跳到了函数末尾。 Python 如果函数执行到一半未完成,则返回“None”。

定义并调用函数 Python

步骤 2)将打印命令替换为赋值命令

为了更清楚地说明这一点,我们将打印命令替换为赋值命令。让我们检查一下输出结果。

定义并调用函数 Python

运行命令“print square (4)”时,它实际上返回的是对象的值。由于这里没有任何特定的函数要运行,所以它返回“None”。

步骤 3)使用“return”函数并执行代码

现在,我们将学习如何使用“return”命令获取输出。当您使用“return”函数并执行代码时,它将输出“16”。

定义并调用函数 Python

步骤 4)运行命令“print square”

函数在 Python 本身就是一个对象,而对象也有一定的价值。我们将在这里看到如何 Python 处理一个对象。当你运行命令“print square”时,它会返回对象的值。由于我们没有传递任何参数,因此这里没有特定的函数要执行,所以它返回一个默认值(0x021B2D30),即对象的位置。在实际应用中…… Python 使用本程序,您可能永远不需要这样做。

定义并调用函数 Python

函数中的参数

参数是调用函数时传递给函数的值。

换句话说,在调用端它是参数,在函数端它是实参。

让我们看看 Python 论证有效。

步骤1) 参数在函数定义中声明。调用函数时,您可以按如下所示传递这些参数的值。

定义并调用函数 Python

步骤2) 要为参数声明默认值,请在函数定义处为其赋值。

定义并调用函数 Python

计费示例: x 没有默认值。y 的默认值为 0。当我们在调用 multiply 函数时只提供一个参数时, Python 将提供的值赋给 x,同时保持ping y 的值为 0。因此,x*y 的乘积为 0。

定义并调用函数 Python

步骤3) 这次我们将值改为 y=2 而不是默认值 y=0,它将返回输出 (4×2)=8。

定义并调用函数 Python

步骤4) 您还可以更改参数传递的顺序。 Python这里我们将 x 和 y 的值顺序颠倒过来,得到 x=4 和 y=2。

定义并调用函数 Python

步骤5) 也可以将多个参数作为数组传递。在这个例子中,我们通过调用 (*args) 函数来调用多个参数 (1,2,3,4,5)。

计费示例: 我们将多个参数声明为数字(1、2、3、4、5);当我们调用(*args)函数时,它会打印出输出(1、2、3、4、5)。

定义并调用函数 Python

提示:

  • In Python 2.7 版本不支持函数重载。函数重载是指创建多个同名但实现不同的方法。函数重载在 2.7 版本中得到完全支持。 Python 3.
  • 方法和函数之间经常被混淆。方法 Python 函数与对象实例相关联,而对象实例则不相关联。 Python 调用方法时,它会将该调用的第一个参数绑定到相应的对象引用。简而言之, Python 是一个“函数”,而作为类或实例的属性的函数则是“方法”。

这是完整的 Python 3代码

#define a function
def func1():
   print ("I am learning Python function")
   print ("still in func1")
   
func1()

def square(x):
  	return x*x
print(square(4))

def multiply(x,y=0):
	print("value of x=",x)
	print("value of y=",y)
    
	return x*y
  
print(multiply(y=2,x=4))

这是完整的 Python 2代码

#define a function
def func1():
   print " I am learning Python function"
   print " still in func1"
   
func1()

def square(x):
  	return x*x
print square(4)

def multiply(x,y=0):
	print"value of x=",x
	print"value of y=",y
    
	return x*y
  
print multiply(y=2,x=4)

常见问题

是的。 一种 Python 函数可以通过在 return 关键字后用逗号分隔来返回多个值。 Python 将它们打包成一个元组,调用者可以将其解包成单独的变量,例如 a, b = func()。

`*args` 将额外的位置参数收集到一个元组中,而 `**kwargs` 将额外的关键字参数收集到一个字典中。两者都允许函数接受可变数量的输入,`args` 和 `kwargs` 这两个名称只是约定俗成,并非强制要求。

文档字符串(docstring)是一个字符串字面量,通常放在函数内部的第一条语句中,用于说明函数的功能。它用三引号括起来,可以在运行时通过函数的 `__doc__` 属性或 `help()` 函数读取。

lambda 表达式是一个简短的匿名函数,用 lambda 关键字而不是 def 定义在一行中。它适用于传递给 map()、filter() 和 sorted() 等函数的简短、一次性逻辑。参见此处 拉姆达函数 指南。

是的。调用自身的函数是递归函数。递归解决的是能够分解成更小的相似子问题的问题,例如阶乘。每个递归函数都需要一个终止调用的基本情况,否则就会出错。 Python 引发 RecursionError 异常。

局部变量是在函数内部创建的,并且仅在该函数运行时存在。全局变量是在所有函数外部定义的,并且在任何地方都可见。要在函数内部修改全局变量,请先使用 `global` 关键字声明它。

GitHub Copilot 会根据函数名或简短注释建议完整的函数体,包括参数、返回语句和文档字符串。它还会建议处理特殊情况和编写测试,让您专注于逻辑本身,而不是代码。ping 样板定义块。

函数将人工智能和机器学习代码组织成可重用的步骤,例如数据加载、预处理、训练和评估。它们使实验更易于阅读和测试,而像 TensorFlow 和 scikit-learn 这样的框架则通过你调用的命名良好的函数来公开其大部分行为。

总结一下这篇文章: