当前位置: 首页 > news >正文

《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

相关文章:

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

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 函数 1、函数的调用2、函数的参数2.1、变量的就近原则2.2、传递参数2.3、形参和实…...

PHP流浪动物招领网站mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP流浪动物招领网站 是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 下载链接 nullhttps://download.csdn.net/download/qq_41221322/88190168视频演示 …...

android—ktor-client封装使用,请求网络

ktor-client封装使用步骤: 1.导入依赖: 设置版本号: buildscript {ext.ktor_version 2.3.1 }添加依赖: implementation "io.ktor:ktor-client-okhttp:$ktor_version"implementation "io.ktor:ktor-client-auth…...

GD32F103VE侵入事件

GD32F103VE的TAMPER引脚(PC13),当PC13输入低电平时,会产生一个侵入检测事件。它会将所有“数据备份寄存器”内容清除。 这个功能有什么用? 一是防止被人开壳,抄袭。二是自毁功能。 直奔主题,多一句就是浪费时间。测试…...

将tp5项目、fastadmin项目部署到服务器宝塔面板

目录 一、将你的fastadmin或者tp5项目文件夹上传至你的服务器域名根目录下 二、修改你的网站目录指向,指向public目录,点击保存,并取消勾选防跨站攻击。 三、配置伪静态 四、fastadmin框架上传至服务器后如果想要访问后台可以进行重定向&am…...

Jenkins+Docker+SpringCloud微服务持续集成

JenkinsDockerSpringCloud微服务持续集成 JenkinsDockerSpringCloud持续集成流程说明SpringCloud微服务源码概述本地运行微服务本地部署微服务 Docker安装和Dockerfile制作微服务镜像Harbor镜像仓库安装及使用在Harbor创建用户和项目上传镜像到Harbor从Harbor下载镜像 微服务持…...

系统架构设计师-系统可靠性分析与设计

目录 一、可靠性相关基本概念 二、可靠性指标 1、串联系统与并联系统可靠性指标计算 2、混合系统 三、可靠性设计 1、影响软件可靠性的主要因素: 2、增加可靠性的解决方案 2.1 避错技术 2.2 降低复杂度设计 2.3 检错技术 2.4 容错技术 3、双机容错 一、可靠性相关…...

Linux(CentOS7)搭建达梦数据库

参考官方文档 本文记录一下达梦数据库的安装步骤,在安装的过程中出现了一些问题,进行了处理。 文章目录 安装前准备数据库安装命令行安装图形化安装 配置实例注册服务启动、停止数据库达梦数据库卸载 安装前准备 用户在安装 DM 数据库之前需要检查或修…...

[杂谈]-国产MCU竞争力浅析

[杂谈]-国产MCU竞争力浅析 文章目录 [杂谈]-国产MCU竞争力浅析1、研发方面2、技术方面3、市场方面4、应用方面5、生态方面6、总结 微控制器(MCU)是一种集成了微处理器、存储器、输入/输出接口和其他外设的单片电路,广泛应用于各种电子产品和系…...

4.1、Flink任务怎样读取集合中的数据

1、API说明 非并行数据源: def fromElements[T: TypeInformation](data: T*): DataStream[T] def fromCollection[T: TypeInformation](data: Seq[T]): DataStream[T] def fromCollection[T: TypeInformation] (data: Iterator[T]): Data…...

JD商品详情页面+关键词搜索商品列表API接口数据,详情页面数据返回值说明

作为一个工作助手,我无法直接为您提供实时的京东商品详情。您可以通过访问京东官方网站或使用API接口来查看商品的详细信息。每个商品的详情页面通常会包括以下内容: 1. 商品标题:商品的名称和简要描述。 2. 价格信息:包括原价、…...

Electron v26.0.0-beta.11 发布,跨平台桌面应用开发工具

Electron是一款跨平台桌面应用开发工具,它基于Web技术,使用HTML、CSS和JavaScript来构建应用程序。它能够让开发者使用熟悉的Web开发技术来创建强大的桌面应用,并且可以运行在Windows、macOS和Linux等多个操作系统上。 一、Electron的特点 跨平台:Electron可以将Web技术转…...

提高办案效率:公检系统引入自动校对技术

引入自动校对技术到公检系统中可以有效提高办案效率。自动校对技术结合公检系统的特点,可以在以下方面提高办案效率: 1.节省时间:自动校对技术可以快速检测和修正法律文书中的语法、拼写和标点符号等错误。与手动校对相比,自动校对…...

iptables 清空

清空 iptables中所有策略。 -Z: 重置计数器 -F:删除所有规则(flush) -X:删除所有自定义的链 规则清理和重建如下: iptables -Z iptables -t nat -F iptables -t nat -X iptables -t nat -P PREROUTING A…...

网络安全(黑客)零基础入门

导语 什么是 Web 安全?我又该如何入门学习它呢?学习过程中又应注意哪些问题呢?... 或许你的心中有着这样的疑问、不过别着急,本文会为你一一解答这些问题。 正文 定义 Web 安全,顾名思义便是由保障 Web 应用能够持续…...

Al Go: 蒙特卡洛树搜索(MCTS)简介

目录 1. 前言 1.1 Minimax 1.2 剪枝 1.3 蒙特卡洛树搜索 1.4 为什么随机走子会可行呢? 2. vanilla Monte Carlo tree search 3. UCT-based trade-off between exploitation and exploration 4. MCTS基本算法流程 5. Efficiency Through Expert Policies 6…...

Client-go操作Deployment

在工作中需要对kubernetes进行自定义资源的开发,操作K8s的资源肯定是必不可少的。K8s原生语言是用Go编写的,所以在CRD中使用client-go来操作资源。本次介绍一下使用client-go来操作Deployment。 1. 创建main函数 func main() {homePath : homedir.Home…...

设计模式——单例模式(懒汉和饿汉)

单例模式 一、概念 单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。一个类只能有一个实例在生活中是很常见的,比如打印机程…...

详解——Vue3递归函数功能

在 Vue 3 中,递归函数是一种在组件中调用自身的技术。递归函数在解决树状数据结构、无限级分类、嵌套组件等情况下非常有用。以下是一个示例,展示如何在 Vue 3 中实现递归函数的功能、代码和原理: 1. 创建递归组件: 首先&#x…...

【VSCode】查看二进制文件

1.安装插件Hex Editor 2.打开二进制文件 3.执行Hex Editor命令...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

企业如何增强终端安全?

在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...