Python笔记8 函数

简介: 本文是作者的Python复习笔记第八篇,全面介绍了Python中的函数定义与使用,包括函数的参数传递(位置参数、关键字参数、默认参数、列表参数、任意数量参数和关键字参数)、函数的返回值以及如何创建和调用函数库(模块),并提供了丰富的示例代码。

一、函数

函数是程序中一个个小小的功能模块,可以有输入和输出,输入过程中通常会将实参值赋给形参,形参在函数体内参与运算

def function_name(parameter1, parameter2):
    statement1
    statement2
    return something_or_nothing
AI 代码解读

① 传递实参

1. 位置传递

按照函数定义的形参顺序,在调用时依次输入实参变量

def add(number1, number2):
    sum = number1 + number2
    return sum

a = 3
b = 5
print(add(a, b))
AI 代码解读

2. 关键词传递

无需按照顺序输入实参变量

def pet(type, whos):
    print(type + " is " +whos + "'s pet.")

pet(whos = "Herman", type = "dog")
AI 代码解读
dog is Herman's pet.
AI 代码解读

3. 默认值

当为函数形参设置默认值时,可以省略它的实参传递,但是要注意,有默认值的需要放在没有默认值的形参后面,当需要为这个有默认值的形参设置参数时,采用关键词传递方式或位置传递,默认值的函数形参同样遵循位置传递的顺序

def pet(typename, whos="Herman"):
    print(typename + " is " + whos + "'s pet.")


pet("dog")
pet(whos="Bob", typename="cat")
AI 代码解读
dog is Herman's pet.
cat is Bob's pet.
AI 代码解读

② 传递列表

当传递列表时,同复制列表不可以直接使用list_new = list 一样,因为会使得新旧变量均指向同一个列表,因此当传递列表时,在函数体内对形式列表变量的操作也会影响到实际的列表,当需要保留原列表时,可以使用切片表示法,在向函数传递时,给函数传递一个列表的完全切片(复制品)

function_name(list_name[:])
AI 代码解读
def juice(food):
    while food:
        add_in_food = food.pop()
        print("Add " + add_in_food + " into juice")
        if food:
            print(str(food) + " remain in function")
        else:
            print("nothing in the food")


fruits = ['apple', 'orange', 'banana']
juice(fruits[:])
print(fruits)
AI 代码解读

③ 传递任意数量的实参

在形参名前加星号,让Python创建一个名为形参名的空元组,并将收到的所有值装入元组(不可修改的列表)
如果某个形参要接纳任意数量的实参,应该将其放在形参顺序的最后,将会在满足完全函数所有的无默认值参数、有默认值参数后,开始将剩下的值填入元组并存于最后一个形参变量中

def food(username, *pet_names):
    print(username + " has " + str(pet_names))


food("herman", "tomato", "banana")
AI 代码解读
herman has ('tomato', 'banana')
AI 代码解读

④ 使用任意数量的关键词实参

当需要向函数传递不定数量的键-值对时,可以在形参前添加双星号,使这个形参的形式为字典,将会把满足完前面参数剩下的关键词参数名及其对应的值,以键值对的形式存入字典

def person_info(name, **user_infos):
    profile = {
   }
    profile['name'] = name
    for key, value in user_infos.items():
        profile[key] = value
    return profile


herman_profile = person_info("herman", school= "ABC_School", age=18)
print(herman_profile)
AI 代码解读
{
   'name': 'herman', 'school': 'ABC_School', 'age': 18}
AI 代码解读

二、函数的库(模块)与库的调用

① 函数库的封装

在python中,函数的库以.py文件的形式存储,在函数库文件中只有函数

② 函数库的调用

当目录相同时可以这样调用

1. 调用整个库

import的本质是将代码copy到此处,在使用库内函数时,只需要在函数前加上库名并带一个点

import module_name
AI 代码解读
module_name.function()
AI 代码解读

2. 调用库中某些函数

直接调用库内某些函数时,使用函数时无需再带上库名

from module_name import function_name_1, function_name_2
AI 代码解读
function()
AI 代码解读

3. 为库指定别名

使用关键字as

import module_name as nickname
AI 代码解读
nickname.function()
AI 代码解读

4. 为库内函数指定别名

直接调用库内某些函数时,使用函数时无需再带上库名

from module_name import function_name as fn
AI 代码解读
fn()
AI 代码解读

5. 导入模块所有函数

通常不使用,因为容易和本文件内已经命名好的函数重名导致报错

from module_name import *
AI 代码解读
目录
打赏
0
0
0
0
26
分享
相关文章
|
3月前
|
【python从入门到精通】-- 第五战:函数大总结
【python从入门到精通】-- 第五战:函数大总结
101 0
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
142 67
|
1天前
|
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
14 3
|
5天前
|
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
19 2
|
1月前
|
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
50 18
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
47 8
|
1月前
|
Python中的函数
Python中的函数
45 8
Python中的装饰器:解锁函数增强的魔法####
本文深入探讨了Python语言中一个既强大又灵活的特性——装饰器(Decorator),它以一种优雅的方式实现了函数功能的扩展与增强。不同于传统的代码复用机制,装饰器通过高阶函数的形式,为开发者提供了在不修改原函数源代码的前提下,动态添加新功能的能力。我们将从装饰器的基本概念入手,逐步解析其工作原理,并通过一系列实例展示如何利用装饰器进行日志记录、性能测试、事务处理等常见任务,最终揭示装饰器在提升代码可读性、维护性和功能性方面的独特价值。 ####
|
2月前
|
Python中的`range`函数与负增长
在Python中,`range`函数用于生成整数序列,支持正向和负向增长。本文详细介绍了如何使用`range`生成负增长的整数序列,并提供了多个实际应用示例,如反向遍历列表、生成倒计时和计算递减等差数列的和。通过这些示例,读者可以更好地掌握`range`函数的使用方法。
55 5
Python之函数详解
【10月更文挑战第12天】
Python之函数详解
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等