Python 笔记 | 函数定义与调用
在 Python 中,函数是一种组织代码的方式,它允许你为一段代码块定义一个名称,然后可以在程序的多个地方通过这个名字来调用这段代码块。下面是如何定义和使用 Python 函数的基本语法:
定义一个函数
Python |
---|
| def 函数名(参数1, 参数2, ..., 参数n):
"""
这里是函数的文档字符串(docstring),用于解释函数的作用、参数和返回值。
"""
函数体 # 这里是执行特定任务的代码块
return 返回值 # 可选,用于返回函数执行的结果
|
def
是定义函数的关键字。
函数名
是你给函数起的名字,这个名字必须是有效的Python标识符。
参数
是传递给函数的值,这些值在函数体内可以被引用。参数是可选的,如果没有参数,函数定义时的小括号内可以为空。
函数体
是包含函数执行时所需代码的代码块。这个代码块通过冒号 :
开始,并且必须缩进。
return
语句用于从函数中返回一个值。这也是可选的,如果没有 return
语句,函数将返回 None
。
函数调用
一旦函数被定义,你就可以在程序的任何地方通过函数名来调用它,并传递任何必要的参数。例如,如果你定义了一个名为 greet
的函数,你可以这样调用它:
实例
下面是一个简单的Python函数示例,该函数接受两个参数(name
和 greeting
),并返回一个字符串,该字符串是这两个参数的组合:
Python |
---|
| def greet(name, greeting):
"""
这个函数接受一个名字和一个问候语,并返回一个问候字符串。
"""
return f"{greeting}, {name}!"
# 调用函数并打印结果
print(greet("Alice", "Hello")) # 输出: Hello, Alice!
|
类型注解
在 Python 中,函数定义本身并不直接支持像某些静态类型语言(如 C++、Java 等)那样的类型注解(type annotations),即你无法直接通过函数定义来强制限定参数或返回值的类型。但从Python 3.5 开始,PEP 484 引入了类型注解的语法,使得我们可以在函数定义时为参数和返回值提供预期的类型信息。
虽然这些类型注解在运行时不会强制检查类型,但它们可以被第三方工具(如 PyCharm 的静态类型检查器等)用来进行静态类型检查,以发现潜在的类型错误。此外,这些类型注解对于文档和 API 的可读性也非常有帮助,所以定义函数时应该养成写类型注解的习惯。
下面是一个带有类型注解的函数定义示例:
Python |
---|
| def greet(name: str, greeting: str) -> str:
"""
这个函数接受一个字符串类型的名字和一个字符串类型的问候语,
并返回一个字符串类型的问候字符串。
"""
return f"{greeting}, {name}!"
# 调用函数(注意:这里不会进行类型检查)
print(greet("Alice", "Hello")) # 输出: Hello, Alice!
# 如果尝试传入非字符串类型的参数,Python解释器不会报错,但静态类型检查器可能会警告
print(greet(123, 456)) # 输出: 456, 123!(但这不是期望的行为)
|
在上面的示例中,: str
是类型注解,它表示参数 name
和 greeting
应该是字符串类型。-> str
表示函数的返回值应该是字符串类型。
综合实践
Python |
---|
| # 用关键字 def 来定义函数
def calculate_sector(central_angle, radius):
sector_area = central_angle / 360 * 3.14 * radius ** 2
print(f"sector area: {sector_area:.2f}")
return sector_area
calculate_sector(160, 30)
"""
写一个计算 BMI 的函数,函数名为 calculate_BMI.
1.可以计算任意体重和身高的BMI值
2.执行过程中打印一句话,"您的BMI分类为:?"
3.返回计算出的BMI值
BMI = 体重 / (身高 ** 2)BMI分类
偏瘦:BMI <= 18.5
正常:18.5 < BMI <= 25
偏胖:25 < BMI <= 30
肥胖:BMI > 30
"""
def calculate_BMI(user_weight: float, user_height: float) -> float:
user_bmi = user_weight / (user_height ** 2)
index, level = 3, ["偏瘦", "正常", "偏胖", "肥胖"]
if user_bmi <= 18.5:
index = 0
elif user_bmi <= 25:
index = 1
elif user_bmi <= 30:
index = 2
print(f"您的BMI分类为: {level[index]}")
return user_bmi
calculate_BMI(90, 1.85)
|