python函数的基本语法

1.函数的定义和调用

在 Python 中,函数通过定义和调用来实现,函数定义的基本语法如下:

def function_name(parameters):

"""docstring"""

statements

return [expression]

1.1 定义

def 是 Python 中定义函数的关键字,后面跟着函数名称,括号里是函数的参数,冒号结尾。函数体是缩进的部分,可以包含一些语句和表达式。如果函数有返回值,使用 return 关键字。

# 定义函数

def greeting(name: str) -> str:

"""

This function returns a greeting message.

"""

return "Hello, " + name + "!"

1.2 调用

可以通过函数名称加括号的形式来调用函数,传递参数给函数。函数可以返回值,也可以不返回任何值。

# 调用函数

result = greeting("John")

print(result) # 输出:Hello, John!

2.函数的参数

函数可以接收多个参数,这些参数可以是必需的或可选的。在函数定义中使用参数列表来指定这些参数。

2.1 必需参数

必需参数是函数定义中必须包含的参数,调用函数时必须提供这些参数的值。

# 定义函数,接收两个必需参数

def add(a, b):

return a + b

# 调用函数,传递两个参数

result = add(3, 5)

print(result) # 输出:8

2.2 关键字参数

关键字参数是在调用函数时,用参数名(关键字)来指定参数值的方式,可以避免参数顺序的问题。

# 定义函数,接收两个关键字参数

def greeting(name, message):

return message + ", " + name + "!"

# 调用函数,传递两个关键字参数

result = greeting(message="How are you", name="John")

print(result) # 输出:How are you, John!

2.3 默认参数

默认参数指的是在函数定义中给参数指定一个默认值,在调用函数时可以不传递该参数的值。如果函数调用时传递了该参数的值,则会覆盖默认值。

# 定义函数,接收两个参数,其中 b 参数是一个默认参数

def add(a, b=2):

return a + b

# 调用函数,传递一个参数

result1 = add(3)

print(result1) # 输出:5

# 调用函数,传递两个参数,并覆盖 b 的默认值

result2 = add(3, 5)

print(result2) # 输出:8

2.4 可变参数

可变参数是一种用于处理可变数量参数的一种参数形式,可以用一个通用的参数名称来接收任意数量的参数。在函数定义中,用 *args 的形式来定义可变参数。

# 定义函数,接收可变数量参数

def sum(*args):

total = 0

for n in args:

total += n

return total

# 调用函数,传递多个参数

result1 = sum(1, 2, 3, 4)

print(result1) # 输出:10

# 调用函数,传递列表或元组作为参数

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

result2 = sum(*values)

print(result2) # 输出:15

2.5 关键字可变参数

使用关键字可变参数可以接收任意数量的关键字参数。在函数定义中,用 **kwargs 的形式来定义关键字可变参数。

# 定义函数,接收任意数量的关键字参数

def print_kwargs(**kwargs):

print(kwargs)

# 调用函数,传递关键字参数

print_kwargs(a=1, b=2, c=3)

# 输出:{'a': 1, 'b': 2, 'c': 3}

3.函数的返回值

函数可以返回一个或多个值,使用 return 关键字。如果函数没有显式指定返回值,则默认返回 None。

# 定义函数,返回一个值

def square(x):

return x ** 2

# 调用函数,输出返回值

result = square(3)

print(result) # 输出:9

# 定义函数,返回多个值

def coordinates(x, y):

return x, y

# 调用函数,输出多个返回值

x, y = coordinates(3, 4)

print("x =", x) # 输出:x = 3

print("y =", y) # 输出:y = 4

4.函数的作用域

函数中定义的变量有自己的作用域,也就是变量的可见性和使用范围。

4.1 函数内部作用域

在函数内部定义的变量拥有局部作用域,它们不能在函数外部访问。

# 定义函数

def func():

var = "Hello, World!"

print(var)

# 调用函数

func() # 输出:Hello, World!

# 尝试访问函数内定义的变量

print(var) # 报错:NameError: name 'var' is not defined

4.2 函数外部作用域

在函数外部定义的变量拥有全局作用域,可以在函数内部访问和修改。

# 定义全局变量

x = 10

# 定义函数

def func():

global x

x += 1

print(x)

# 调用函数

func() # 输出:11

# 访问全局变量

print(x) # 输出:11

5.函数的文档字符串

函数的文档字符串是函数的第一个语句中的字符串,用于为函数提供注释和帮助信息。文档字符串可以通过函数内置的 __doc__ 属性来访问。

# 定义函数,包含文档字符串

def square(x):

"""

This function returns the square of the given number.

"""

return x ** 2

# 访问函数的文档字符串

print(square.__doc__)

# 输出:This function returns the square of the given number.

6.匿名函数(Lambda函数)

匿名函数(Lambda函数)是一种简单的函数,它可以在一行代码中定义一个函数,通常用于传递一个简单的函数作为参数。

# 定义匿名函数

add = lambda x, y: x + y

# 使用匿名函数

result = add(3, 5)

print(result) # 输出:8

7.函数装饰器

函数装饰器是一种用于修改函数行为的函数,它们通常在函数定义之前使用 @decorator_name 的形式来声明。

# 定义函数装饰器

def my_decorator(func):

def wrapper(*args, **kwargs):

print("Before function is called.")

result = func(*args, **kwargs)

print("After function is called.")

return result

return wrapper

# 使用函数装饰器,装饰已有函数

@my_decorator

def my_function():

print("Function has been called.")

# 调用装饰后的函数

my_function()

# 输出:

# Before function is called.

# Function has been called.

# After function is called.

总结

本文介绍了 Python 函数的基本语法,包括函数的定义和调用、函数的参数、函数的返回值、函数的作用域、函数的文档字符串、匿名函数和函数装饰器。函数是编写可重用代码的基本方式之一,学会函数的使用对于 Python 开发非常重要。

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

后端开发标签