Python函数的定义和使用方法:句法和范围
Python是一种非常流行的编程语言,它的函数也是其最为重要的部分之一。在Python中,函数是一些可重复使用的代码块,它可以接收输入参数,并且在调用时可以返回值。在本篇文章中,我们将会介绍Python函数的定义和使用方法,包括语法和作用域。
一、Python函数的定义方法
Python函数的定义方法非常简单,就是使用def关键字。以下是Python定义函数的基本语法格式:
def function_name(parameters):
"""docstring"""
function_body
return [expression]
其中,“function_name”是函数的名称,“parameters”是函数基于的参数列表。函数名称和参数列表都是必要的部分,而“docstring”、函数体和返回值表达式则是可选的。
- 函数名称
函数名称必须是唯一的,也就是说,在Python程序中,不同的函数名称不能相同。通常,函数名称使用小写字母,而且如果有多个单词,可以使用下划线“_”分隔。
- 参数列表
在Python中,函数参数可以按照不同类型的参数进行分类。这些参数类型分别是位置参数、默认参数、可变长度参数、关键字参数和关键字可变长度参数。
位置参数是通过位置来输入值的参数,我们可以根据它们在函数声明中的顺序来传递它们。例如:
def print_numbers(x, y, z): print(x, y, z) print_numbers(1, 2, 3) #output 1 2 3
默认参数是一些在函数定义时就已经赋定值的参数。在调用函数时,可以不给这类参数赋值,但如果需要,也可以通过指定值来覆盖默认值。例如:
def print_countries(country="united states"):
print(country)
print_countries() #output united states
print_countries("japan") #output japan
可变长度参数允许传递任意数量的参数,并且这些参数将被作为元组处理。*args就是用来处理这种方式的参数格式。例如:
def add_numbers(*args):
result = sum(args)
print(result)
add_numbers(1,2,3,4) #Output: 10
add_numbers(10, 20, 30, 40, 50) #Output: 150
关键字参数和参数键值对是指在调用函数时使用名称来传递的参数。
def print_india_states(**kwargs):
for key, value in kwargs.items():
print("{0} : {1}".format(key, value))
print_india_states(state1 = "Andhra Pradesh", state2 = "Arunachal Pradesh", state3 = "Assam", state4 = "Bihar")
#output
#state1 : Andhra Pradesh
#state2 : Arunachal Pradesh
#state3 : Assam
#state4 : Bihar
其中,kwargs表示关键字参数字典的名称。
- Documentation strings (Docstrings)
文档字符串是Python中函数的可选描述,这个描述通常用来文档化代码。它放置在函数定义的第一行字符串中,可以根据需要提供函数的详细解释说明。例如:
def greet(name):
"""
This function greets to
the person passed in as
parameter
"""
print("Hello, " + name + ". Good morning!")
- 函数体
函数体是封装在函数定义中的代码块,它是被调用时执行的代码。函数体中可以包含任意数量的语句。
- 返回值表达式
返回值表达式用于指定函数返回值的语句。在Python中,函数的返回值是可选的,如果函数没有指定返回值,则返回 None。
二、Python函数的调用方法
在Python中,调用函数时,我们可以使用两种基本的方法:位置参数和关键字参数。
位置参数就是按照参数定义的顺序传递值的方式。例如:
def greet(name, msg):
"""
This function greets to
the person with the
provided message.
"""
print("Hello", name + ', ' + msg)
greet("Alex", "Good morning!")
在这个例子中,我们按照函数定义中参数的顺序传递了函数的值。
关键字参数就是使用参数名称和值的方式传递值。这样,调用者可以明确地指定参数的名称,而不必考虑它们在声明中的位置关系。例如:
def greet(name, msg):
"""
This function greets to
the person with the
provided message.
"""
print("Hello", name + ', ' + msg)
greet(msg="Good morning!", name="Alex")
在这个例子中,我们使用了关键字参数来设置函数的值。
在Python中,我们还可以使用默认参数和可变长度参数进行函数调用。例如:
def greet(name, msg="Good morning!"):
"""
This function greets to
the person with the
provided message.
"""
print("Hello", name + ', ' + msg)
greet("Alex")
greet("Alex", "How do you do?")
这里,我们使用默认参数为“msg”提供默认值,并在调用函数时传递不同的值。同样,我们还可以使用可变长度参数来调用函数。例如:
def greet(*names):
"""
This function greets all
the person in the names tuple.
"""
for name in names:
print("Hello", name)
greet("Alex", "David", "Bob", "Christine")
在这里,我们使用可变长度参数来传递任意数量的参数。
三、Python函数的作用域方法
在Python中,作用域控制变量的生命周期和可见性。Python函数的作用域由变量的声明方式决定。在Python中,有两种作用域:全局作用域和局部作用域。
全局变量一般定义在代码的最开始,在函数之外。所有在同一文件中的函数中都可以访问全局变量,但是需要使用global关键字显式声明。
a = 10 def test(): global a a = a+1 print(a) test() #output 11
在这个例子中,我们在函数中使用了全局变量a,并使用global关键字将其声明为全局变量。
局部变量只存在于定义它们的函数内部。在函数内部定义的变量只能由该函数访问,而它们在函数结束时就会被销毁。例如:
def add_numbers(x, y):
result = x + y
return result
print(add_numbers(10, 20)) #output 30
在这个例子中,由于“result”是在函数内声明的局部变量,因此它只能在函数内部访问。
总结
Python函数与其他编程语言中的函数非常相似,它们是可重复使用的代码块,可以接收输入参数,并在调用时可以返回值。在Python中,我们可以灵活地定义各种类型的函数参数,如位置参数、默认参数、可变长度参数、关键字参数和关键字可变长度参数。此外,作用域决定了变量的生命周期和可见性。Python中有两种作用域:全局作用域和局部作用域。在Python中,函数是编写更具模块性和可重复性的软件的关键部分。
