[Python学习篇] Python函数

定义函数

语法:使用关键字 def

def 函数名(参数):
    代码1
    代码2
    ......

调用函数

语法:

函数名(参数)

注意:不同的需求,参数可有可无。在Python中,函数必须先定义后使用

示例:

# 定义函数
def hello(name):print("Hello my name is " + name)# 调用函数
hello("Tom") # 打印 Hello my name is Tom

函数的形参和实参

形参:定义函数的同时定义了参数

实参:调用函数时传入参数的真实数据叫实参。

函数的返回值

语法:关键字 return

def 函数名():

    return 返回值

示例:

# 定义函数
def add(a, b):return a + b# 调用函数
result = add(1, 2)
print(result)  # 打印 3

函数的多个返回值

语法:多个返回值使用英式逗号分割

def 函数名():

    return 返回值1,  返回值2, 返回值n

注意:

1,多个变量接收函数多个返回值,变量和返回值顺序一一对应。
2,一个变量接收函数多个返回值,返回的变量类型默认是元组类型。

3,return 可以返回列表、元组或者字典,用于表示返回多个值。

示例:

# 定义函数
def test():return 1, 10, 'a'# 多个变量接收函数多个返回值,变量和返回值顺序一一对应
a, b, c = test()
print(a)  # 1
print(b)  # 10
print(c)  # a# 一个变量接收函数多个返回值,返回的变量类型是元组类型
t1 = test()
print(t1)  # (1, 10, 'a')

函数的说明文档

定义语法:

def 函数名(参数):
    """ 说明⽂档的位置,必须是函数内部第一行的注释"""
    代码
    ......

使用语法:

help(函数名)             # 使用内置函数help,查看函数说明文档

示例:

# 定义
def add(a, b):"""加法运算,返回运算结果"""return a + b# 查看函数说明文档
help(add)

 

变量的作用域

  • 局部变量

局部变量是定义在函数体内部的变量,即只在函数体内部⽣效。局部变量的作用是在函数体内部,临时保存数据,即当函数调⽤完成后,则销毁局部变量。

  • 全局变量

全局变量是在函数体内、外都能⽣效的变量。

修改全局变量,使用 global 关键字
a = 100def testA():a = 200print(a)  # 打印函数内变量a,这时a是局部变量,修改a=200,不影响全局变量a的值testA()
print(a)  # 打印 100,在testA中修改的值,不影响全局变量a# 演示局部内修改全局变量的值
def testB():# 使用 global 关键字声明a为全局变量global aa = 200  # 声明后再修改变量a的值,此时就是修改全局变量a的值print(a)  # 打印 200testB()
print(a)  # 打印 200

函数的参数

  • 位置参数

调用函数时根据函数定义的参数位置来传递参数。例如形参有2个,实参就需要传入2个。形参实参数据按照顺序一一对应。

示例:

def hello(name, age):print(f"您的名字是{name}, 年龄是{age}")hello("Tom", 20)  # 您的名字是Tom, 年龄是20
  • 关键字参数

函数调用通过“键=值”形式加以指定。可以让函数更加清晰、容易使用。函数调用时,如果有位置参数,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序。

示例:

def hello(name, age, gender):print(f"您的名字是{name}, 年龄是{age}, 性别是{gender}")hello("Tom", gender="男", age=20)  # 您的名字是Tom, 年龄是20, 性别是男
  • 缺省参数

缺省参数也叫默认参数,用于定义函数时,为参数提供默认值,调用函数时缺省参数不传值,此时使用参数的默认值。缺省参数传值时使用传入的值(注意:定义函数和调用函数时,默认参数要写在所有参数的后面)。

def hello(name, age, gender='男'):print(f"您的名字是{name}, 年龄是{age}, 性别是{gender}")hello("Tom", 20)  # 您的名字是Tom, 年龄是20, 性别是男
hello("Jerry", 19, '女')  # 您的名字是Jerry, 年龄是19, 性别是女
  • 可变参数

可变参数也叫不定长参数。用于不确定调用的时候会传递多少个参数(不传参也可以)的场景。此时,可以包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递(组包的过程),会显得非常方便。

可变参数有两种类型:

  1. 包裹位置参数
  2. 包裹关键字参数
1. 包裹位置参数
def hello(*args):print(args)    # args是元组类型hello(100)  # (100,)
hello('Tom', 'John', 'Smith')  # ('Tom', 'John', 'Smith')
2. 包裹关键字参数
def hello(**kwargs):print(kwargs)  # kwargs 是字典类型hello(name="Tom", age=18)  # {'name': 'Tom', 'age': 18}

拆包

组包是将零散的数据组合成一个元组或者列表或者字典过程,拆包就是将一个组合的数据拆成零散的变量数据。

  • 元组拆包
def hello():return 100, 200a, b = hello()
print(a)  # 100
print(b)  # 200
  • 字典拆包
dict1 = {'name': 'Tom', 'age': 20}
# 拆包,得到字典的key
a, b = dict1
print(a)  # name
print(b)  # age# 通过key,得到value
print(dict1[a])  # Tom
print(dict1[b])  # 20

交换变量

a = 10
b = 20a, b = b, a
print(a)  # 20
print(b)  # 10

引用传递和值传递

  • 引用传递

在函数传递变量的过程中,引用传递的是变量的引用地址(栈内存空间指向存储变量数据的堆内存地址),并不是变量本身。这意味着函数内部对变量数据的修改会影响原变量数据。

  • 值传递

值传递是指在函数传递变量的过程中,程序把变量值复制了一份存储在新的堆内存地址中(新创建了一个变量,变量的值相同)后把新创建的变量本身传入到函数中,当函数对传入的变量值进行了修改后,不影响原变量的数据,原数据不变。

注意:

  • 在Python中,数据的传递都是通用引用的方式传递的,没有值传递没有值传递没有值传递。
  • 在引用传递过程中,原有的变量值是否改变又取决于变量的数据类型是可变类型还是不可变类型
    • 对于不可变对象,修改操作会创建新的对象,因此看起来像是值传递。
    • 对于可变对象,修改操作会影响到原来的对象,体现了引用传递的特性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/367228.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为仓颉编程语言

目录 一、引言 二、仓颉编程语言概述 三、技术特征 四、应用场景 五、社区支持 六、结论与展望 一、引言 随着信息技术的快速发展,编程语言作为软件开发的核心工具,其重要性日益凸显。近年来,华为公司投入大量研发资源,成功…

小白学python(第三天)

小伙伴,大家好呀,昨天的内容吸收的好?昨天有小伙伴私信我,建议我在博文中加点练习题,可以看出这位童鞋很想学好这门语言哈,那我也尽量满足大家的要求。 从控制台输入 语法格式: 变量名 input…

C++基础(三):C++入门(二)

上一篇博客我们正式进入C的学习,这一篇博客我们继续学习C入门的基础内容,一定要学好入门阶段的内容,这是后续学习C的基础,方便我们后续更加容易的理解C。 目录 一、内联函数 1.0 产生的原因 1.1 概念 1.2 特性 1.3 面试题 …

深入了解Qt 控件:Display Widgets部件(1) 以及 QT自定义控件(电池)

QT自定义控件(电池) 在线调色板Qt之CSS专栏Chapter1 QT自定义控件(电池)Chapter2 Qt教程 — 3.5 深入了解Qt 控件:Display Widgets部件(1)1 Display Widgets简介2 如何使用Display Widgets部件 Chapter3 Qt自定义控件电池组件使用前言一、最基…

告别熬夜改稿:AI降重工具让论文降重变得轻松又有趣

已经天临五年了,大学生们还在为论文降重烦恼……手动降重确实是个难题,必须要先付点小经费去靠谱的网站查重,再对着红字标注去改,后面每一次的论文呢查重结果都像赌//博,谁也不知道明明是同一篇文章,第二次…

Linux:系统引导过程与服务控制

目录 一、linux 系统引导过程 1.1、引导过程总览 1.2、系统初始化进程 (centos 6和7 的区别) 1.2.1、centos 6 的引导过程 init 进程 1.2.2、centos 7(systemd进程) 二、MBR、GRUB菜单、忘记密码故障修复 2.1、修复MBR扇区故障 模拟故障 重启…

IT行业入门,如何假期逆袭,实现抢跑

目录 前言 1.IT行业领域分类 2.基础课程预习指南 3.技术学习路线 4.学习资源推荐 结束语 前言 IT(信息技术)行业是一个非常广泛和多样化的领域,它包括了许多不同的专业领域和职业路径。如果要进军IT行业,我们应该要明确自己…

基于循环神经网络的一维信号降噪方法(简单版本,Python)

代码非常简单。 import torch import torch.nn as nn from torch.autograd import Variable from scipy.io.wavfile import write #need install pydub module #pip install pydub import numpy as np import pydub from scipy import signal import IPython import matplot…

美术馆预约小程序的设计

管理员账户功能包括:系统首页,个人中心,展品信息管理,管理员管理,用户管理,美术馆管理,基础数据管理,论坛管理 微信端账号功能包括:系统首页,美术馆&#xf…

【C语言】文件的顺序读写

©作者:末央& ©系列:C语言初阶(适合小白入门) ©说明:以凡人之笔墨,书写未来之大梦 目录 前言字符输入输出函数 - fgetc和fputc文本行输入输出函数 - fgets和fputs格式化输入输出函数 - fscanf和fprintf 前言 对文件数据的读写可以分为顺序…

小红书 达芬奇:生活问答 AI 机器人

小红书去年 9 月开始内测的生活问答 AI 机器人:达芬奇,现在可以在小红书 APP 上用了 得益于小红书平台的特性,该助手擅长吃、住、宠、喝、学等等各类生活知识,目前还在搞活动,写评测笔记最高得 666 元

ABAQUS软件天津正版代理商亿达四方:创新技术,驱动产业升级

在环渤海经济圈的核心地带——天津,随着智能制造与高新技术产业的蓬勃发展,对高端仿真软件的需求日益增长。亿达四方,作为ABAQUS在天津的官方正版代理商,凭借其深厚的行业经验和卓越的服务体系,正为这片热土上的科研机…

音乐播放器小程序的设计

管理员账户功能包括:系统首页,个人中心,歌曲信息管理,会员优惠管理,用户管理,会员办理管理,歌曲分类管理,会员信息管理 微信端账号功能包括:系统首页,歌曲信…

深入了解激光粒度分析仪:检测物质粒度分布的利器

在科研、工业生产以及环境监测等多个领域中,精确测量物质粒度分布是确保产品质量、研究准确性和环境安全的重要步骤。 近年来,激光粒度分析仪以其独特的技术优势,在这些领域发挥着越来越重要的作用。 在这篇文章中,佰德将带您了…

机器学习Python代码实战(二)分类算法:k-最近邻

一.k-最近邻算法步骤 1.选择适当的k值。它表示在预测新的数据点时要考虑的邻居数量。 2.计算距离。计算未知点与其他所有点之间的距离。常用的距离计算方法主要有欧氏距离,曼哈顿距离等。 3.选择邻居。在训练集中选择与要预测的数据点距离最近的k个邻居。 4.预测…

递归算法练习

112. 路径总和 package Tree;import java.util.HashMap; import java.util.Map;class TreeNode {int val;TreeNode left;TreeNode right;public TreeNode(int val) {this.val val;} }/*** 求 树的路径和* <p>* 递归 递减* <p>* 询问是否存在从*当前节点 root 到叶…

JDBC学习(Java DataBase Connectivity)

JDBC简介 JDBC入门 驱动jar包&#xff1a;C:\Users\49960\Desktop\mysql-connector-j-9.0.0 需要配置add library&#xff01;&#xff01;&#xff01; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.util.Stack;pub…

如何构建智能聊天系统

聊天分为听、思考、读&#xff0c;简单的通过ASR、LLM、TTS三类模型的组合可以实现&#xff0c;最近openai推出支持多模态的GPT-4o模型&#xff0c;可以把三个模型真正融合成在一起。 现在市面上的模型百花齐放&#xff0c;各有所长。要实现可落地的方案&#xff0c;需要结合业…

Python实现万花筒效果:创造炫目的动态图案

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame定义绘制万花筒图案的函数主循环 完整代码 引言 万花筒效果通过反射和旋转图案创造出美丽的对称图案。在这篇博客中&#xff0c;我们将使用Python来实现一个动态的万花筒效果。通过利用Pygame库&#xf…

数据结构算法之B树

一、绪论 1.1 数据结构的概念和作用 1.2 B树的起源和应用领域 二、B树的基本原理 2.1 B树的定义和特点 2.2 B树的结构和节点组成 2.3 B树的插入 2.4 B树的删除操作 三、B树的优势和应用 3.1 B树在数据库系统中的应用 3.2 B树在文件系统中的应用 3.3 B树在内存管理中…