当前位置:首页>python>从零开始学python-函数_1

从零开始学python-函数_1

  • 2026-08-22 15:04:25
从零开始学python-函数_1

Hi~新朋友,记得点上面蓝字(网虫root)关注哟~

前言:

函数是组织好的、可重复使用的代码块,用于实现单一或相关联的功能。它们能够提高应用程序的模块化程度和代码的重复利用率。Python 提供了许多内置函数(如 print(), len()),同时也允许你创建自定义函数。

1. 定义一个函数

  • 可以根据自己的需求定义函数。以下是定义函数的基本规则:

  • 函数代码块以 def 关键字开头,后跟函数名和圆括号 ()。

  • 任何传入的参数和自变量必须放在圆括号内。

  • 函数的第一行语句可以选择性地使用文档字符串(docstring)来说明函数的功能。

  • 函数体从冒号 : 开始,并且必须缩进。

  • return [表达式] 语句用于退出函数并返回一个值给调用方。不带表达式的 return 相当于返回 None。

🌈语法:

def 函数名(参数列表):    """函数文档字符串(可选)"""    # 函数体    return [表达式]  # 可选

实例 1:定义一个简单的问候函数

以下函数接收一个名字作为参数,并打印一句问候语。

def greet(name):    """接收一个名字,打印问候语"""    print(f"你好,{name}!欢迎学习Python函数。")# 调用函数greet("小明")greet("小红")

以上实例输出结果:

你好,小明!欢迎学习Python函数。你好,小红!欢迎学习Python函数。

实例 2:带返回值的函数 - 计算矩形面积

def rectangle_area(length, width):    """计算并返回矩形的面积"""    area = length * width    return area# 调用函数l = 10w = 5print(f"长为{l},宽为{w}的矩形面积是:{rectangle_area(l, w)}")length2 = 7.5width2 = 3.2area2 = rectangle_area(length2, width2)print(f"长为{length2},宽为{width2}的矩形面积是:{area2}")

以上实例输出结果:

长为10,宽为5的矩形面积是:50长为7.5,宽为3.2的矩形面积是:24.0

实例 3:判断一个数是否为偶数

def is_even(num):    """如果数字是偶数,返回True;否则返回False"""    if num % 2 == 0:        return True    else:        return False# 测试函数numbers = [10, 15, 22, 37]for n in numbers:    if is_even(n):        print(f"{n} 是偶数")    else:        print(f"{n} 是奇数")

以上实例输出结果:

10 是偶数15 是奇数22 是偶数37 是奇数

2. 函数调用

定义一个函数后,你可以通过另一个函数调用它,或者直接从 Python 提示符执行。

💭实例:在另一个函数中调用函数

def get_square(x):    """返回一个数的平方"""    return x * xdef print_squares_up_to(n):    """打印从1到n(包含n)的所有整数的平方"""    print(f"1到{n}的平方:")    for i in range(1, n+1):        square = get_square(i)  # 在这里调用 get_square 函数        print(f"{i}的平方 = {square}")# 调用 print_squares_up_to 函数print_squares_up_to(5)

以上实例输出结果:

1到5的平方:1的平方 = 12的平方 = 43的平方 = 94的平方 = 165的平方 = 25

3. 参数传递

在 Python 中,类型属于对象,变量只是对象的引用。理解这一点对于掌握参数传递至关重要。

  • 不可变对象:int、float、str、tuple。在函数内部修改不可变对象,实际上是创建了一个新的对象。

  • 可变对象:list、dict、set。在函数内部修改可变对象的内容,会影响原始对象。

⚗️实例:传递不可变对象

def try_modify_int(x):    print(f"函数内部,初始x的id: {id(x)}")    x += 10  # 尝试修改    print(f"函数内部,修改后x的id: {id(x)},值: {x}")    return xa = 5print(f"调用前,a的id: {id(a)},值: {a}")result = try_modify_int(a)print(f"调用后,a的id: {id(a)},值: {a}")print(f"函数返回值的id: {id(result)},值: {result}")

以上实例输出结果(具体id数字可能不同):

调用前,a的id: 140736574012232,值: 5函数内部,初始x的id: 140736574012232函数内部,修改后x的id: 140736574012552,值: 15调用后,a的id: 140736574012232,值: 5函数返回值的id: 140736574012552,值: 15

分析:可以看到,整数 a 是不可变对象,函数内修改时创建了新对象,原始 a 不受影响。

✨实例:传递可变对象

def add_item(my_list, item):    """向列表末尾添加一个元素"""    print(f"函数内部,初始列表的id: {id(my_list)}")    my_list.append(item)    print(f"函数内部,添加后列表的id: {id(my_list)},内容: {my_list}")shopping_list = ["苹果", "香蕉"]print(f"调用前,列表的id: {id(shopping_list)},内容: {shopping_list}")add_item(shopping_list, "牛奶")print(f"调用后,列表的id: {id(shopping_list)},内容: {shopping_list}")

以上实例输出结果:

调用前,列表的id: 4567890123,内容: ['苹果', '香蕉']函数内部,初始列表的id: 4567890123函数内部,添加后列表的id: 4567890123,内容: ['苹果', '香蕉', '牛奶']调用后,列表的id: 4567890123,内容: ['苹果', '香蕉', '牛奶']

分析:列表是可变对象,函数内修改其内容时,原始列表也被修改了,因为它们是同一个对象的引用。

【微语】别想太多,好好生活,也许日子过着过着就会有答案,努力走着走着就会有温柔的着落。

网虫root

期待你的

分享

点赞

在看

最新文章

随机文章