首页 > 编程语言 >python 函数基础

python 函数基础

时间:2024-11-09 11:43:49浏览次数:3  
标签:函数 python 基础 Alice greet 参数 def name

python 函数基础


  在编程的世界里,函数是构建程序大厦的基石。Python作为一种高级编程语言,提供了强大且灵活的函数定义和调用机制。本文将对python函数基础的相关知识进行讲解。

1.函数的目的

函数,作为编程中的基本构造块,承载着代码重用、逻辑清晰与模块化设计的重任。它允许我们将复杂的操作封装为可重复调用的单元,从而简化代码结构,提升开发效率。简单来说就是将一段具有特定功能的代码封装起来,以便在需要时重复使用。

2.函数的定义

Python中的函数通过def关键字进行定义,其基本结构如下:

def 函数名(参数列表):
    函数体
    return 返回值(可选)

例如,定义一个计算两数之和的函数:

def add(a,b):
    return a+b

3.函数的声明与调用

在Python中,函数的定义即为声明。一旦函数被定义,我们就可以通过函数名加上必要的参数来调用它。函数调用时,Python会跳转到函数定义处执行,并在执行完毕后返回调用点继续执行。

# 定义函数(声明函数)
def add(a,b):
    return a+b

#调用函数
print(10,20) #输出30

4.函数的形参与实参

函数定义中的参数列表中的参数被称为形式参数(简称形参)。形参在函数定义时指定,但在函数被调用之前并不占用实际的内存空间。它们只是函数期望接收的值的占位符。在函数调用时传递给函数的实际值被称为实际参数(简称实参)。实参在函数调用时占用实际的内存空间,并将它们的值传递给函数中的形参。Python中的参数传递机制遵循“按值传递”的原则,但需要注意的是,对于可变类型(如列表、字典等),传递的是对象的引用,因此在函数内部对可变类型的修改会影响到外部的对象。

def modify_list(lst):
    lst.append(10)
 
my_list = [1, 2, 3]
modify_list(my_list)
print(my_list)  # 输出:[1, 2, 3, 10]

5.函数的返回值

函数可以通过return语句返回一个或多个值(在Python 3.6+中,可以使用元组返回多个值)。返回值可以是任何数据类型,包括数字、字符串、列表、字典等。如果函数没有显式地返回任何值,则默认返回None。返回值的存在使得函数能够与外界进行交互,传递计算结果或状态信息。

def add_and_subtract(a, b):
    return a + b, a - b
 
sum_diff = add_and_subtract(5, 3)
print(sum_diff)  # 输出:(8, 2)

6.函数的参数类型

Python函数支持多种类型的参数,包括位置参数、关键字参数、默认参数和可变参数(*args和**kwargs)。默认参数允许我们在函数定义时为某些参数指定默认值,从而在调用时省略这些参数。

6.1位置参数:

位置参数是最基本的参数形式,函数调用时参数的位置必须与函数定义时参数的位置一致。

def greet(name, age):
    print(f"Hello, my name is {name} and I am {age} years old.")

greet("Alice", 30)  # 输出: Hello, my name is Alice and I am 30 years old.
6.2关键字参数:

关键字参数允许你在调用函数时指定参数名,这使得参数的顺序变得不重要。

def greet(name, age):
    print(f"Hello, my name is {name} and I am {age} years old.")

greet(age=30, name="Alice")  # 输出: Hello, my name is Alice and I am 30 years old.
6.3默认参数:

默认参数在函数定义时为参数指定默认值,如果在函数调用时没有提供该参数,则使用默认值。

def greet(name, age=25):
    print(f"Hello, my name is {name} and I am {age} years old.")

greet("Alice")  # 输出: Hello, my name is Alice and I am 25 years old.
greet("Bob", 35)  # 输出: Hello, my name is Bob and I am 35 years old.
6.4可变参数:

6.4.1*args:
*args 允许你传递任意数量的位置参数到函数中,这些参数在函数内部被收集到一个名为 args 的元组中。

def greet(*args):
    for arg in args:
        print(arg)

greet("Alice", 30, "Engineer")  # 输出: Alice, 30, Engineer

6.4.2 **args:
**kwargs 允许你传递任意数量的关键字参数到函数中,这些参数在函数内部被收集到一个名为 kwargs 的字典中。

def greet(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

greet(name="Alice", age=30, job="Engineer")  # 输出: name: Alice, age: 30, job: Engineer

7.匿名函数

Python中的lambda表达式允许我们创建匿名函数,即没有名称的函数。匿名函数通常用于需要函数对象的短暂场景,如作为参数传递给其他函数。lambda表达式的基本语法如下:

lambda 参数列表: 表达式

例如,使用lambda表达式创建一个简单的加法函数:

add = lambda x, y: x + y
print(add(3, 5))  # 输出:8

8.函数的进阶应用

除了基本功能外,Python函数还支持闭包、装饰器、递归等高级特性。闭包允许函数在定义时捕获并保留其外部作用域中的变量;装饰器则提供了一种在不修改原函数代码的情况下扩展或修改函数行为的方法;递归则是一种通过函数调用自身来解决问题的编程技巧。这些功能将在其他文章中进行讲解。

标签:函数,python,基础,Alice,greet,参数,def,name
From: https://blog.csdn.net/2201_75622573/article/details/143580108

相关文章

  • python如何创建虚拟环境
    在Python中创建虚拟环境是一种常见的做法,它可以帮助你为不同的项目创建隔离的Python环境,避免库版本冲突。以下是使用Python内置的venv模块创建虚拟环境的步骤:确保Python已安装:首先,确保你的系统中已经安装了Python。你可以通过在终端或命令提示符中运行python--version或python3......
  • 实验3 类和对象_基础编程2
    实验任务一1#pragmaonce2#include<iostream>3#include<string>45usingstd::string;6usingstd::cout;78//按钮类9classButton{10public:11Button(conststring&text);12stringget_label()const;13voidcl......
  • 100+SCI科研绘图系列教程(R和python)
    科研绘图系列:箱线图加百分比点图展示组间差异-CSDN博客科研绘图系列:箱线图加蜜蜂图展示组间数据分布-CSDN博客科研绘图系列:小提琴图和双侧小提琴图展示组间差异-CSDN博客科研绘图系列:组间差异的STAMP图的ggplot2实现-CSDN博客科研绘图系列:组间差异误差棒展示-CSDN博客科研......
  • Python中实现微信支付
    目录一,准备环境1,要有微信公众号,商户平台账号2,支持的支付方式有3,备案域名一,扫码支付如图1所示,使用模式一生成支付二维码2,使用模式二生成支付二维码二,使用JSAPI发起微信支付  回到顶部一,准备环境#1,要有微信公众号,商户平台账号#https://pay.weixin.qq.......
  • python便携版
    python便携版embeddable版本的python就是便携版的,但是没有带pip,可以使用get-pip安装使用pip。以windows下的python举例:打开链接:https://www.python.org/downloads/windows/下载Windowsembeddablepackage(64-bit)版本解压后编辑python313._pth(这里是3.13版本),取消......
  • 音视频入门基础:FLV专题(24)——FFmpeg源码中,获取FLV文件视频信息的实现
    =================================================================音视频入门基础:FLV专题系列文章:音视频入门基础:FLV专题(1)——FLV官方文档下载音视频入门基础:FLV专题(2)——使用FFmpeg命令生成flv文件音视频入门基础:FLV专题(3)——FLVheader简介音视频入门基础:FLV专题(4)—......
  • 音视频入门基础:FLV专题(23)——FFmpeg源码中,获取FLV文件音频信息的实现(下)
    =================================================================音视频入门基础:FLV专题系列文章:音视频入门基础:FLV专题(1)——FLV官方文档下载音视频入门基础:FLV专题(2)——使用FFmpeg命令生成flv文件音视频入门基础:FLV专题(3)——FLVheader简介音视频入门基础:FLV专题(4)—......
  • HarmonyOS Next之Asset Store Kit基础功能全解析
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)在开发多语言电商平台方面的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在HarmonyOS......
  • Java基础语法闪过——纯小白
    Java语法突击笔者因为学校奇葩选课原因,需要学习Java,考试所迫和大伙一起交流复习下基础的语法内容,大家都一把拿下考试......
  • 2024-2025-1 20241423 《计算机基础与程序设计》第七周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里2024-2025-1计算机基础与程序设计第七周作业这个作业的目标数组与链表、基于数组和基于链表实现数据结构、无序表与有序表、树、图、子程序与参数作业正文本博......