Python基础 4.函数

1. Python函数基础

函数是Python程序中最重要的组成部分之一。函数是为了完成特定任务而设计的代码块,并且它们只有在调用时才会执行。Python提供了许多内置的函数,同时还能够创建用户定义的函数。在Python中,函数定义以def关键字开头,后跟函数名和括号中的可选参数列表。函数代码块以冒号开头,并在下一行包含一个或多个缩进的语句块。

1.1 定义函数

我们来看一个最简单的例子。下面的代码定义了一个名为hello()的函数。

def hello():

print("Hello, world!")

一旦你定义了函数,就可以像下面这样使用它:

hello()

上述代码执行后,取决于您使用的Python版本,会输出Hello, world!行。

1.2 函数参数

在Python中,定义函数时可以指定参数。我们通过以下方式来定义一个名为printName()的函数,该函数通过传递参数来输出任意名称:

def printName(name):

print("Name is: ", name)

在上面的代码中,我们定义了函数printName(),它接受一个参数name。在函数中,我们打印了一个字符串和传递给我们的名称参数。您可以通过下面这种方式来调用上述函数:

printName("Python")

运行上面的代码会输出以下结果:

Name is:  Python

您可以将多个参数添加到函数,并通过逗号分隔它们。例如,以下函数addNumbers()将两个数字相加:

def addNumbers(a, b):

sum = a + b

return sum

上述代码定义了一个函数addNumbers(),它具有两个参数ab。这两个数字被加起来,并且返回它们的总和。

2. Python内置函数

除了您自己定义的函数之外,Python还提供了一些内置的函数可供使用。这些函数是在Python解释器中预定义的,因此无需导入任何模块即可使用。

2.1 print()

print()是Python中最常用的内置函数之一。它用于将值打印到屏幕上,通常用于打印变量的值。以下是一个简单的示例:

x = 5

print("x =", x)

运行上面的代码将打印以下内容:

x = 5

2.2 input()

input()函数用于从用户那里获取输入。以下是一个简单的示例:

name = input("Enter your name:")

print("Hello,", name)

运行上面的代码将要求用户输入他们的名称。输入名称之后,程序将打印一个欢迎消息,包括他们的名称。

2.3 str()

str()函数用于将值转换为字符串。以下是一个示例:

x = 5

print(str(x) + " is a number")

运行上述代码将打印以下内容:

5 is a number

3. 匿名函数

Python中的匿名函数是指没有名称的函数。它是通过lambda关键字定义的。这些函数通常用于临时任务,其中没有必要定义函数并对其进行索引。

3.1 定义匿名函数

在Python中,您可以使用lambda关键字创建一个匿名函数。以下是一个简单的示例,在其中我们使用lambda创建了一个接受两个参数并将它们相加的函数:

sum = lambda x, y: x + y

print(sum(3, 5))

运行上述代码将输出以下内容:

8

3.2 匿名函数的优点

匿名函数比命名函数更具有灵活性。它们是临时构建的,因此您无需担心命名冲突。匿名函数通常用于更复杂的操作,而不是简单的加法或子字符串。

4. 内置函数map()

在Python中,您可以使用map()函数将一个函数应用于列表的所有元素,以生成新的列表。以下是一个示例:

def square(x):

return x ** 2

x = [1, 2, 3, 4, 5]

y = map(square, x)

print(list(y))

上面的代码定义了一个名为square()的函数,该函数返回任何数字的平方。接下来,我们定义了一个列表x,包含了数字1到5。然后,我们通过将我们的函数和x传递给map()函数来创建了一个名为y的新列表,在新列表中,每个旧列表中的元素都是我们的函数应用于该元素后的结果。

最后,我们使用list()函数将新列表y打印为列表,而不是map对象,以便更好地查看输出。运行上述代码将输出以下内容:

[1, 4, 9, 16, 25]

5. 递归函数

Python中的递归函数是指可以调用自身的函数。递归函数可以用于处理复杂的数据结构,例如树或有向图。

5.1 编写递归函数

以下是一个递归函数的例子,该函数用于计算阶乘:

def factorial(x):

if x == 1:

return 1

else:

return x * factorial(x - 1)

print(factorial(5))

在上述代码中,我们定义了一个名为factorial()的函数,该函数以x作为输入。函数检查输入是否等于1。如果是,则返回1。否则,函数返回x和factorial(x-1)的乘积。

5.2 递归函数的优点

使用递归函数可以使代码更精简。它可以用于处理复杂数据结构,如树,因为在树中,每个节点都有可能有多个子节点。递归函数可以递归处理每个子节点,直到到达叶节点为止。

6. 函数装饰器

在Python中,您可以使用装饰器来修改现有的功能。装饰器是一种特殊类型的函数,它可以接受另一个函数作为输入,并将其修改为具有不同行为的新函数。

6.1 编写装饰器

以下是一个简单的装饰器的示例,该装饰器确定给定函数的执行时间:

import time

def timeit(func):

def wrapper():

start = time.time()

func()

end = time.time()

print("Time taken:", end - start, "seconds")

return wrapper

def someFunction():

time.sleep(2)

someFunction = timeit(someFunction)

someFunction()

在上面的代码中,我们定义了一个timeit()装饰器,它接受一个函数作为输入并返回一个新的函数(wrapper),该函数将提供有关函数执行时间的信息。这是通过测量函数执行时间并将其打印到控制台来实现的。

接下来,我们定义了一个名为someFunction()的函数,并将其传递给timeit()装饰器。作为结果,我们获得了一个新函数someFunction,它被修改为具有添加有关执行时间的信息的行为。

最后,我们调用了新函数someFunction()。运行上述代码将输出以下内容:

Time taken: 2.0000131130218506 seconds

7. 结论

在本文中,我们介绍了Python函数的基础知识以及Python中的一些常用的内置函数。我们还讨论了如何创建匿名函数,如何使用map()函数,以及如何使用递归函数。最后,我们还讨论了如何编写装饰器来修改现有的函数。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签