明日目标:

理解函数的概念和优势。学会怎样定义和调用函数。理解函数的参数和返回值。学习使用默认参数和关键字参数。第一部份:为何须要函数?

想像一下,你在程序中须要多次估算圆的面积。若果没有函数,你须要重复写这样的代码:

# 计算第一个圆的面积
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!")

函数定义和调用_函数参数和返回值_linux creat函数

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):
    """计算正方形面积"""

linux creat函数_函数参数和返回值_函数定义和调用

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  # 返回多个值
# 接收多个返回值

函数参数和返回值_函数定义和调用_linux creat函数

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}"
# 按位置传递

linux creat函数_函数定义和调用_函数参数和返回值

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:估算器函数

函数参数和返回值_函数定义和调用_linux creat函数

创建一组函数来实现基本的物理运算:

示例:

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函数,理解函数的工作原理。

第九天完成,你早已学会了让代码愈发高贵和高效的方式!

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复