《Python入门到精通》函数详解

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:小白零基础《Python入门到精通》

函数

  • 1、函数的调用
  • 2、函数的参数
    • 2.1、变量的就近原则
    • 2.2、传递参数
    • 2.3、形参和实参
    • 2.4、位置参数
    • 2.5、缺省参数
    • 2.6、可变类型和不可变类型
    • 2.7、关键字参数
  • 3、匿名函数
  • 4、函数的返回值

函数就是一段「封装」起来的「代码」,目的是提高代码的「模块性」「复用性」

「模块性」:把具有「独立功能」的代码封装成一个模块,同时可以增加可读性
「复用性」:把需要「使用多次」的代码封装成一个模块(函数),后续直接调用函数,提高开发效率。

语法

def 函数名():代码
  1. 使用 def 关键字定义函数,后面跟函数名,后面跟括号()
  2. 括号里用来定义参数,多个参数之间使用逗号间隔
  3. 函数的内容以冒号:开始,并且缩进
  4. 最后可以选择用 return 结束函数,结束的同时返回一个值。

实例:创建一个函数

def function1():print('hello pyton')

1、函数的调用

创建的函数默认「不执行」,需要「调用」才会执行;使用 函数名() 调用函数。

# 1、创建函数
def function1():print('hello pyton')# 2、调用函数
function1()

输出:

hello pyton

2、函数的参数

参数可以给函数「传递变量」,函数利用收到的变量进行具体的操作。

2.1、变量的就近原则

Python中的变量遵守「就近原则」,比如函数里面和外面有两个名字相同的变量,函数就会使用「里面」的变量,而不是外面的变量。

# 函数外面的变量
money = 18def function1():# 函数里面的变量money = 20print(money)function1()

开发时,如果搞混了这些「名字相同」的变量,可能会出现意料之外的情况。为了避免出现这类问题,函数采用了参数传递的方式。


2.2、传递参数

给函数传两个参数,并在函数内调用

name = 'ZhangSan'
money = 18def function1( name, money):print('我的名字是', name, '我有', money, '块钱!')function1( name, money)

输出:

我的名字是 ZhangSan 我有 18 块钱!

2.3、形参和实参

函数创建时,括号里的参数叫「形参」(形式参数),用来接收参数。

函数调用时,括号里的参数叫「实参」(实际参数),用来实际使用。

形参和实参的「名字」可以「不同」

比如,我把参数名字随便改成其他的名字,仍然可以正常调用。当然,实际开发时,建议根据作用来命名参数。

name = 'ZhangSan'
money = 18# 1、函数定义时,接收形参
def function1( a, b):print('我的名字是', a, '我有', b, '块钱!')# 2、函数调用时,传入实参
function1( name, money)

输出:

我的名字是 ZhangSan 我有 18 块钱!

2.4、位置参数

函数调用时,参数的「数量」「位置」必须和函数创建时一样。

name = 'ZhangSan'
money = 18def function1( a, b):print('第一个参数:', a)print('第二个参数:', b)function1( name, money)

输出:

第一个参数: ZhangSan
第二个参数: 18

如果参数的「数量不对」,会报错 TypeError。

在这里插入图片描述

如果参数的「位置不对」,会不符合预期。

name = 'ZhangSan'
money = 18def function1( a, b):print('我的名字是:', a, '我有', b, '快钱!')function1( money, name)

输出:

我的名字是: 18 我有 ZhangSan 快钱!

2.5、缺省参数

缺省参数也叫「默认参数」,在函数定义时,给参数指定「默认值」

拥有默认值的参数,在函数调用时可以「不传值」

  • 如果传值,参数就会使用传入的新值
  • 如果不传值,参数就会使用默认值
name = 'ZhangSan'
money = 18# 1、参数设置默认值
def function1( a, b = 28):print('我的名字是:', a, '我有', b, '块钱!')# 2、传值
function1( name, money)
# 3、不传值
function1( name)

输出:

我的名字是: ZhangSan 我有 18 块钱!
我的名字是: ZhangSan 我有 28 块钱!

2.6、可变类型和不可变类型

Python变量的类型中,整型、字符串、元组属于「不可变类型」,列表、字典等属于「可变类型」

  • 函数接收「不可变类型」的参数,采用「值传递」,只是修改另一个复制的变量,不会改变原变量的值。
  • 函数接收「可变类型」的参数,采用「引用传递」,会改变原变量的值。
str1 = 'ZhangSan'
list1 = [1, 2, 3]# 修改传入的参数
def function1( str, list):str * 2list.append(4)function1( str1, list1)print(str1)
print(list1)

输出:

ZhangSan
[1, 2, 3, 4]

2.7、关键字参数

函数调用时,可以按照「参数关键字」给参数「赋值」。使用这种方式,可以不受参数顺序的限制。

name = 'ZhangSan'
money = 18def function1( a, b):print('我的名字是', a, '我有', b, '块钱!')# 关键字参数传参
function1( b=money, a=name)

输出:

我的名字是 ZhangSan 我有 18 块钱!

3、匿名函数

匿名函数不需要 def 来声明函数,而是用 lambda 表达式来创建函数。常用于处理简单的场景。

语法

函数名 = lambda [参数] : 代码块

lambda 表达式的格式是固定的,因此只能封装有限的代码进去。

实例:创建一个匿名函数,返回两个数相加之和。

function1 = lambda num1, num2: num1 + num2result = function1(1, 2)
print(result)

输出:

3

4、函数的返回值

关键字 return 可以让函数返回一个值,比如将函数的执行结果返回,或者返回一个自定义的值。

返回多个值需要用逗号间隔;如果不指定值,就返回None。

def function1(a, b):return a + bdef function2(a, b):return '自定义的值'def function3(a, b):return '第一个值', '第二个值'def function4(a, b):returnprint(function1(1, 2))
print(function2(1, 2))
print(function3(1, 2))
print(function4(1, 2))

输出:

3
自定义的值
('第一个值', '第二个值')
None

return 还有退出函数的作用, return 后面的代码不会被执行;如果一个函数内有多个 return ,则只返回第一个 return 的返回值。

def function1(a, b):return a + bprint('return后面的代码')return '第二个返回值'print(function1(1, 2))

输出:

3

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

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

相关文章

收藏!新增6省!2023年度杰青、优青名单汇总(附下载)

2023省级自然科学基金项目名单 杰青、优青项目是国家及各省市为促进青年科学和技术人才的成长,加速培养造就一批进入世界科技前沿的优秀学术带头人而特别设立的科学基金,是各个科研单位竞相争夺的青年科技人才。 按照惯例,2023年国家自然基…

【TypeScript】TS接口interface类型(三)

【TypeScript】TS接口interface类型(三) 【TypeScript】TS接口interface类型(三)一、接口类型二、实践使用2.1 常规类型2.2 设置属性只读 readonly2.3 设置索引签名2.4 设置可选属性2.5 函数类型接口 一、接口类型 TypeScript中的…

树和二叉树 --- 数据结构

目录 1.树的概念及结构 1.1树的概念 1.2树的表示 1.3树在实际生活中的运用 2.二叉树的概念及结构 2.1概念 2.2特殊的二叉树 2.3二叉树的性质 2.4二叉树的存储结构 1.树的概念及结构 1.1树的概念 树是一种非线性的数据结构,它是由n (n>0)个有限结点组成…

广州VR制作 | 利用VR元宇宙平台开展林地管理培训的优势

在林业领域,实地调查是获取准确数据和深入了解森林生态的重要手段。然而,传统的实地调查方法存在诸多问题,如时间成本高、人力物力投入大、安全风险高等。为了解决这些教学痛点,我们引入了虚拟现实(VR)技术,通过虚拟林…

【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码、数据、讲解 💥1 概述 由于能源的日益匮乏,电力需求的不断增长等,配电网中分布式能源渗透率不断提高,且逐渐向主动配电网方…

【Docker】数据库动态授权组件在Kubernetes集群下的测试过程记录

目录 背景 组件原理 测试设计 环境 测试脚本 脚本build为linux可执行文件 镜像构建 Dockerfile Docker build 镜像有效性验证 总结 资料获取方法 背景 我们都知道出于安全性考虑,生产环境的权限一般都是要做最小化控制,尤其是数据库的操作授…

HTTP协议讲解

HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。 HTTP的发展是由蒂姆伯纳斯-李于1989年在欧洲核…

数据结构—树和二叉树

5.树和二叉树 5.1树和二叉树的定义 树形结构(非线性结构):结点之间有分支,具有层次关系。 5.1.1树的定义 树(Tree)是n(n≥0)个结点的有限集。 若n0,称为空树&#x…

git与github常用方法

这里写目录标题 1. Github基本使用方法2. Git使用方法3. git、VS code、Github联合使用方法4. Git配置Github远程仓库SSH密钥5 常见问题 1. Github基本使用方法 仓库(Repository):Github上用来存放代码的空间,包含代码、文档和其…

聊聊springcloud如何与k8s configMap整合实现配置动态刷新

前言 配置中心在微服务的服务治理场景基本上是属于标配,常见可以用来做配置中心有nacos、apollo、zookeeper、springcloud config、consul、etcd、redis、disconf、dimond、xxl-conf等。这些组件的特点都是需要安装,如果大家的部署环境中有用到k8s&…

msvcp120.dll丢失的解决方法,哪种解决方法更实用

msvcp120.dll是Microsoft Visual C 2013库中的一个动态链接库文件。它包含了在使用Visual C 2013编译的应用程序中所需的函数和资源。这个文件通常用于在Windows操作系统上运行使用Visual C 2013编写的软件。如果缺少或损坏了msvcp120.dll文件,可能会导致相关软件无…

Android界面设计与用户体验

Android界面设计与用户体验 1. 引言 在如今竞争激烈的移动应用市场,提供优秀的用户体验成为了应用开发的关键要素。无论应用功能多么强大,如果用户界面设计不合理,用户体验不佳,很可能会导致用户流失。因此,在Androi…