关于Python函数的定义和参数,下面是一个完整攻略。
函数的定义
在Python中,函数是一段可重复使用的代码。函数可以通过一些特定的参数来接受输入,然后返回某个结果。定义一个函数可以使用以下格式:
def function_name(parameter1, parameter2, ...):
"""函数文档字符串,用于函数说明"""
statement1
statement2
...
return [expression]
其中:
- function_name:函数名,遵循Python标识符的命名规范,例如”get_sum”或”calculate_average”。
- parameter1, parameter2, …:函数参数,可以有多个,也可以没有。函数参数是用来接受函数调用者传入的参数值,它们在函数体内作为本地变量使用。
- statement1, statement2, …:函数体内的语句,用来实现函数的功能。语句可以包括Python表达式、控制流语句和函数调用等。
- return [expression]:返回值,用于将函数执行的结果返回给函数调用者。可选。
例如,下面是一个计算两数之和的Python函数:
def get_sum(a, b):
"""返回两数之和"""
return a + b
函数的参数
Python函数的参数可以分为几种类型:位置参数、默认参数、可变参数和关键字参数。
1. 位置参数
位置参数是指在函数调用时按照定义顺序传入的参数,例如上面的get_sum函数,a和b就是位置参数。调用该函数时需要传入两个参数,否则会报错:
result = get_sum(1, 2)
print(result) # 输出3
2. 默认参数
默认参数是在函数定义时就已定义好的参数,调用者可以选择传递,也可以不传递。如果调用者不传递该参数,则使用预先设置好的默认值。默认参数通过在参数后面定义一个等号和默认值来设置,例如:
def print_info(name, age=20):
"""打印个人信息"""
print("Name:", name)
print("Age:", age)
# 调用时只传递一个参数
print_info("Jack")
# 输出:Name: Jack
# Age: 20
# 调用时传递两个参数
print_info("Mike", 25)
# 输出:Name: Mike
# Age: 25
3. 可变参数
可变参数是指在函数调用时可以传递可变个数的参数,这些参数会被转换成一个元组。可变参数通过在参数名前加一个星号来表示,例如:
def get_sum(*args):
"""返回所有参数的和"""
result = 0
for x in args:
result += x
return result
# 调用函数时传递任意个数的参数
result1 = get_sum(1, 2, 3)
result2 = get_sum(1, 2, 3, 4, 5)
# 输出6和15
print(result1, result2)
4. 关键字参数
关键字参数是指在函数调用时以键值对形式传递,这些参数会被转换成一个字典。关键字参数通过在参数名前加两个星号来表示,例如:
def print_info(name, age):
"""打印个人信息"""
print("Name:", name)
print("Age:", age)
# 调用函数时传递关键字参数
print_info(name="Mike", age=25)
# 输出:Name: Mike
# Age: 25
示例说明
下面给出两个示例,说明函数定义和参数的使用:
示例1:计算两点距离
import math
def get_distance(x1, y1, x2, y2):
"""计算两点之间的距离"""
dx = x2 - x1
dy = y2 - y1
distance = math.sqrt(dx ** 2 + dy ** 2)
return distance
# 调用函数计算两点之间的距离
distance = get_distance(0, 0, 3, 4)
# 输出5.0
print(distance)
在这个例子中,我们定义了一个get_distance函数,接收四个位置参数(两个点的坐标),并使用math库计算出两点之间的距离。我们将该函数保存在一个名为distance.py的文件中,然后从另一个文件中导入该函数并调用它。
示例2:画椭圆
import turtle
def draw_ellipse(x, y, a, b):
"""画一个椭圆"""
turtle.penup()
turtle.setposition(x + a, y)
turtle.pendown()
for i in range(0, 360, 10):
radian = i * math.pi / 180
x = a * math.cos(radian)
y = b * math.sin(radian)
turtle.setposition(x + x0, y + y0)
# 调用函数画一个椭圆
draw_ellipse(0, 0, 100, 50)
在这个例子中,我们定义了一个draw_ellipse函数,接收四个位置参数(椭圆中心点坐标和两条半轴的长度),然后使用turtle库画出一个椭圆。注意这里我们使用了Python内置的math库来计算椭圆上每个点的坐标。这个函数同样可以保存在一个名为draw_ellipse.py的文件中,然后在脚本中导入并调用它。