明日目标:
理解函数的概念和优势。学会怎样定义和调用函数。理解函数的参数和返回值。学习使用默认参数和关键字参数。第一部份:为何须要函数?
想像一下,你在程序中须要多次估算圆的面积。若果没有函数,你须要重复写这样的代码:
# 计算第一个圆的面积
radius1 = 5
area1 = 3.14159 * radius1 ** 2
print(f"半径为{radius1}的圆面积是:{area1}")
# 计算第二个圆的面积
radius2 = 8
area2 = 3.14159 * radius2 ** 2
print(f"半径为{radius2}的圆面积是:{area2}")
# 计算第三个圆的面积
radius3 = 10
area3 = 3.14159 * radius3 ** 2
print(f"半径为{radius3}的圆面积是:{area3}")
这有好多重复代码!函数可以解决这个问题。
函数的优势:
第二部份:定义和调用函数定义函数:
# 创建新文件 day9_function.py
# 最简单的函数 - 无参数,无返回值
def say_hello():
"""这是一个简单的问候函数""" # 文档字符串,描述函数功能
print("Hello, World!")

print("欢迎学习Python函数!")
# 调用函数
say_hello()
say_hello() # 可以多次调用
2带参数的函数:
# 带一个参数的函数
def greet(name):
"""向指定的人问好"""
print(f"你好,{name}!")
# 调用时传递参数
greet("小明")
greet("小红")
# 带多个参数的函数
def introduce(name, age, city):
"""介绍一个人的信息"""
print(f"我叫{name},今年{age}岁,来自{city}。")
introduce("张三", 25, "北京")
第三部份:函数的返回值
函数可以通过return句子返回结果。
3有返回值的函数:
# 计算正方形面积的函数
def calculate_square_area(side_length):
"""计算正方形面积"""

area = side_length ** 2
return area # 返回计算结果
# 使用返回值
result = calculate_square_area(5)
print(f"边长为5的正方形面积是:{result}")
# 可以直接在表达式中使用
total_area = calculate_square_area(3) + calculate_square_area(4)
print(f"两个正方形总面积:{total_area}")
# 计算圆面积的函数
def calculate_circle_area(radius, pi=3.14159):
"""计算圆面积"""
return pi * radius ** 2
circle_area = calculate_circle_area(5)
print(f"半径为5的圆面积是:{circle_area}")
4返回多个值:
# 函数可以返回多个值(实际上是返回一个元组)
def rectangle_info(length, width):
"""计算矩形的面积和周长"""
area = length * width
perimeter = 2 * (length + width)
return area, perimeter # 返回多个值
# 接收多个返回值

area, perimeter = rectangle_info(10, 5)
print(f"矩形面积:{area}, 周长:{perimeter}")
# 或者作为一个元组接收
result = rectangle_info(10, 5)
print(f"结果:{result}") # (50, 30)
第四部份:函数的参数解读
5默认参数:
# 带有默认值的参数
def power(base, exponent=2):
"""计算幂,默认计算平方"""
return base ** exponent
print(power(3)) # 使用默认指数2,计算3的平方:9
print(power(3, 3)) # 计算3的立方:27
print(power(2, 4)) # 计算2的4次方:16
# 默认参数必须放在非默认参数后面
# 这是错误的:def power(exponent=2, base):
6关键字参数:
# 使用参数名指定值,可以不按顺序
def create_person(name, age, city, job="学生"):
"""创建个人信息"""
return f"姓名:{name},年龄:{age},城市:{city},职业:{job}"
# 按位置传递

print(create_person("小明", 18, "上海"))
# 使用关键字参数(可以打乱顺序)
print(create_person(age=25, city="北京", name="张三"))
# 混合使用(位置参数必须在关键字参数之前)
print(create_person("李四", job="工程师", city="广州", age=30))
第五部份:变量的作用域
7局部变量和全局变量:
# 全局变量
global_var = "我是全局变量"
def test_scope():
# 局部变量 - 只在函数内部有效
local_var = "我是局部变量"
print(f"函数内访问全局变量:{global_var}")
print(f"函数内访问局部变量:{local_var}")
# 修改全局变量需要使用global关键字
global global_var
global_var = "我修改了全局变量"
test_scope()
print(f"函数外访问全局变量:{global_var}")
# print(local_var) # 这行会报错,因为local_var是局部变量
明日小结与练习
明日核心概念:
动手练习(勿必完成):
练习1:估算器函数

创建一组函数来实现基本的物理运算:
示例:
print(add(5, 3)) # 8
print(subtract(5, 3)) # 2
print(multiply(5, 3)) # 15
print(divide(6, 3)) # 2.0
练习2:个人信息低格
创建一个函数format_person_info()linux creat函数linux手机,接收姓名、年龄、城市等参数,返回低格的个人信息字符串。为城市参数提供默认值”未知”。
示例:
info1 = format_person_info("小明", 18, "上海")
print(info1) # "姓名:小明,年龄:18,城市:上海"
info2 = format_person_info("小红", 17)
print(info2) # "姓名:小红,年龄:17,城市:未知"
练习3(挑战):质数判定函数
创建一个函数is_prime(n)linux 虚拟主机,判定一个数字是否为质数(只能被1和自身整除的数)。若果是质数返回True,否则返回False。
提示:使用循环检测从2到n-1的所有数字是否能整除n。
print(is_prime(7)) # True
print(is_prime(10)) # False
print(is_prime(2)) # True
函数是编程中最重要的概念之一,它让代码愈发模块化和可重用。明天的内容须要反复练习linux creat函数,理解函数的工作原理。
第九天完成,你早已学会了让代码愈发高贵和高效的方式!
