【Python基础】Python函数(基本函数)
文章目录
- Python函数
- 1、函数多返回值
- 2、函数多种传参方式
- (1)位置参数
- (2)关键字参数
- (3)缺省参数
- (4)不定长参数
- 位置传递
- 关键字传递
- 3、小结
Python函数
1、函数多返回值
Q:如果一个函数要有多个返回值,该如何书写代码?
# 使用多个变量,接收多个返回值
def test_return():return 1, "hi", Truex, y, z = test_return()
print(x)
print(y)
print(z)运行效果:
1
hi
True
- 按照返回值的顺序,写对应顺序的多个变量接收即可
- 变量之间用逗号隔开
- 支持不同类型的数据return
2、函数多种传参方式
(1)位置参数
位置参数:调用函数时根据函数定义的参数位置来传递参数
def user_info(name, age, gender):print(f"姓名是:{name},年龄是:{age},性别是:{gender}")# 位置参数 -默认使用形式
user_info('小明', 20, '男')
user_info(20, 'a', '男')运行效果:
姓名是:小明,年龄是:20,性别是:男
姓名是:20,年龄是:a,性别是:男
Tip:传递的参数 和 定义的参数 顺序及个数必须一致
(2)关键字参数
关键字参数:函数调用时通过"键=值"形式传递参数
作用:让函数更加清晰、容易使用,同时也清除了参数的顺序需求
def user_info(name, age, gender):print(f"姓名是:{name},年龄是:{age},性别是:{gender}")# 关键字参数
user_info(name='小王', age=20, gender='女')
user_info(age=20, name='bb', gender='女') # 可以不按照参数的定义顺序传参
user_info('甜甜', gender="女", age=9) # 混用运行效果:
姓名是:小王,年龄是:20,性别是:女
姓名是:bb,年龄是:20,性别是:女
姓名是:甜甜,年龄是:9,性别是:女
Tip:函数调用是,如果有位置参数是,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序
(3)缺省参数
缺省参数:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)
作用:当调用函数时没有传递参数,就会使用默认是缺省参数对应的值
# 缺省参数
def user_info(name, age, gender='male'):print(f"姓名是:{name},年龄是:{age},性别是:{gender}")user_info('TOM', 20)
user_info('Mary', 67, 'female')运行效果:
姓名是:TOM,年龄是:20,性别是:male
姓名是:Mary,年龄是:67,性别是:female
Tip1:函数调用时,如果为缺省参数传值则修改没人参数值,否则使用这个默认值
Tip2:默认参数必须写在最后面
(4)不定长参数
不定长参数:不定长参数也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景
作用:当调用函数是不确定参数个数时,可以使用不定长参数
- 不定长参数的类型:
- 位置传递
- 关键字传递
位置传递
# 不定长传递 -位置传递
# 不定长定义的形式参数会作为元组存在,接收不定长数量的参数传入
def user_info(*args): # 示例代码中通过一个星号去定义一个形式参数print(f"args参数的类型是:{type(args)},内容是:{args}")user_info(1, 2, 'Tom') # 返回一个只有TOM的元组:('Tom',)
user_info('hi', 'Tom', 18) # 返回由tom和18组成的元组:('Tom', 18)# 通过这种形式想传多少参数都可以,这是通过*得到的不定长运行效果:
args参数的类型是:<class 'tuple'>,内容是:(1, 2, 'Tom')
args参数的类型是:<class 'tuple'>,内容是:('hi', 'Tom', 18)
Tip:传进的所有参数 都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这既是位置传递
关键字传递
两个*表示:
- 同样,数量是不受限的
- 同时,内容应满足Key=Value的键值对形式
所以,这个kwargs形式参数,就是一共前面所学习过的数据容器之字典
调用的时候,只需要按照字典的形式传入即可
e.g. name=‘Tom’
# 不定长传递 -关键字传递
# kw指keyword
# 两个*,数量不受限,数据形式受限(必须是KV型)
def user_info(**kwargs):print(f"kwargs参数的类型是:{type(kwargs)},内容是:{kwargs}")# {'name': 'TOM', 'age': 18, 'id': 110}
user_info(name='TOM', age=18, id=110)运行效果:
kwargs参数的类型是:<class 'dict'>,内容是:{'name': 'TOM', 'age': 18, 'id': 110}
Tip:参数是“键=值”形式 的情况下,所以的“键=值
3、小结
- 位置参数:
- 根据参数位置来传递参数
- 关键字参数:
- 通过”键=值“形式传递参数,可以不限参数顺序
- 可以和位置参数混用,位置参数需在前
- 缺省参数
- 不传递参数值时会使用默认的参数
- 默认值的参数必须定义在最后
- 不定长参数
- 位置不定长传递 以*号标记一个形式参数,以元组的形式接受参数,形式参数一般命名为args
- 关键字不定长传递 以**号标记一个形式参数,以字典的形式接受参数,形式参数一般命名为kwargs
相关文章:
【Python基础】Python函数(基本函数)
文章目录 Python函数1、函数多返回值2、函数多种传参方式(1)位置参数(2)关键字参数(3)缺省参数(4)不定长参数位置传递关键字传递 3、小结 Python函数 1、函数多返回值 Q:如果一个函数要有多个返回值,该如何书写代码? # 使用多个变量&#…...
Vue3 + TS + Vite —— 大屏可视化 项目实战
前期回顾 Vue3 Ts Vite pnpm 项目中集成 —— eslint 、prettier、stylelint、husky、commitizen_彩色之外的博客-CSDN博客搭建VIte Ts Vue3项目并集成eslint 、prettier、stylelint、huskyhttps://blog.csdn.net/m0_57904695/article/details/129950163?spm1001.2014…...
EasyExcel 批量导入并校验数据
文章目录 前言一、pom二、使用步骤1.导入对象2.读入数据并保存 前言 EasyExcel 批量导入并校验数据 一、pom <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.7</version></depend…...
亚马逊、Allegro卖家建立属于自己的测评系统,实现批量优质账号养成
卖家搭建一套完整的测评系统,卖家自己能够养出批量优质账号,并完全掌控真实买家的浏览、加购、下单和评价等风控数据规律。我们的系统能够自主加速推广,防御反击,同时节省运营成本,实现高效的测评运营。 我们的系统支…...
springboot的目录结构作用
springboot单体项目结构大概如下。 代码都在src/main下, java是后端代码 java下最基本的包 dao(mapper) entity(model) service controller 其他的包根据项目需求扩展。 resources下是配置文件。 如果不是前后端分离,resources下放的是静态文件…...
微信小程序基础使用-请求数据并渲染
小程序基本使用-请求数据并渲染 小程序模板语法-数据绑定 在js中定义数据 Page({data: {isOpen: true,message: hello world!} })小程序的data是一个对象,不同于vue的data是一个函数 在模块中获取使用数据 小程序中使用 {{}} 实现数据与模板的绑定 内容绑定&a…...
代码随想录训练营Day55| 392.判断子序列 ;115.不同的子序列
392.判断子序列 class Solution {public boolean isSubsequence(String s, String t) {int m s.length();int n t.length();if(m>n) return false;int[][] dp new int[m1][n1];dp[0][0]0;for(int i1;i<m;i){for(int j1;j<n;j){if(s.charAt(i-1)t.charAt(j-1)){dp[i…...
网络作业9【计算机网络】
网络作业9【计算机网络】 前言推荐网络作业9一. 单选题(共12题,36分)二. 多选题(共1题,3分)三. 填空题(共2题,10分)四. 阅读理解(共1题,17分&…...
C++ QT 上传图片至mysql数据库
以下是一个简单的C QT上传图片至MySQL数据库的代码示例: #include <QtSql> #include <QFile> #include <QByteArray> int main() { //连接数据库 QSqlDatabase db QSqlDatabase::addDatabase("QMYSQL"); …...
2023去水印小程序saas系统源码修复独立版v1.0.3+uniapp前端
🎈 限时活动领体验会员:可下载程序网创项目短视频素材 🎈 🎉 有需要的朋友记得关赞评,阅读文章底部来交流!!! 🎉 ✨ 源码介绍 一个基于uniapp写的小程序,后端…...
【ChatGPT】数据科学 ChatGPT Cheat Sheet 书籍分享(阿里云盘下载)
封皮 以下为书中部分内容的机器翻译 我们的重要提示指南 1. 以 AI 角色的描述开始提示。 例如,“你是{x}”或“我希望你扮演{x}”。如果您不确定,请尝试“你是一个有帮助的助手”。 例如,您是 OpenAI 的数据科学家,您正在研究大型…...
使用 Docker-compose 搭建lnmp
服务编排: 应用编排: 单机环境下:shell/python脚本多机/集群环境下:ansible、saltstack、pubbet docker容器编排: 单机:docker-compose多机/集群:docker swarm,mesos marathon&a…...
chatgpt赋能python:Python中的矩阵合并方法:介绍和使用方法
Python中的矩阵合并方法: 介绍和使用方法 矩阵合并是Python编程中常用的操作之一,特别是针对数据分析、机器学习和深度学习等领域。Python提供了多种方法来合并矩阵,本文将介绍这些方法并分享如何在实际应用中使用它们。 普通矩阵合并 最基础的矩阵合…...
Java动态代理:优化静态代理模式的灵活解决方案
文章目录 代理模式定义具体实现分析优缺点 优化使用动态代理解决优化相关知识动态代理种类场景应用 代理模式 定义 代理模式,为其他对象提供一种代理以控制对这个对象的访问 具体实现 代理模式的具体实现描述可以分为以下几个步骤: 创建抽象对象接…...
四种Bootloader程序安全机制设计
正文 大家周末好,我是bug菌~ 不管是玩单片机还是嵌入式linux,基本上都会接触到bootloader,所以bootloader程序也是一个关键的组件,进行硬件初始化,应用程序的合法性、完成性检测、升级功能等等都与其息息相关。 像一些…...
【DBA 警世录之习惯性命令---读书笔记】
👈【上一篇】 💖The Begin💖点点关注,收藏不迷路💖 【下一篇】👉 🔻【💣 话题引入:既然 DBA 这个职业如此危险,那么哪些习惯是 DBA 必须养成的呢&#x…...
Vue中如何进行状态持久化(LocalStorage、SessionStorage)
Vue中如何进行状态持久化(LocalStorage、SessionStorage)? 在Vue应用中,通常需要将一些状态进行持久化,以便在用户关闭浏览器或刷新页面后,仍能保留之前的状态。常见的持久化方式包括LocalStorage和Sessio…...
【30天熟悉Go语言】6 Go 复杂数据类型之指针
文章目录 一、前言二、数据类型总览三、指针1、特殊运算符& *2、内存角度来看指针3、使用指针修改数据4、指针使用的注意事项5、对比着看Java的引用类型 三、总结 一、前言 Go系列文章: GO开篇:手握Java走进Golang的世界2 Go开发环境搭建、Hello Wor…...
Linux内核使用红黑树的场景
进程调度队列 (Process Scheduling):内核需要对进程按照一定的调度策略进行排队,以便更好地利用 CPU 的时间片。因此,内核使用红黑树作为查找和管理进程调度队列的数据结构,以支持快速的查找、插入和删除操作。 文件系统 (File S…...
遗留的 AppSec 工具迷失在云端
随着应用程序开发步伐的加快,IT 和安全团队正在对旧的应用程序安全(AppSec) 工具失去信心。 根据 Backslash 对 300 名 CISO、AppSec 经理和工程师的调查,遗留工具无法跟上并陷入永远的追赶游戏。 影响是深远的,大多数组织都看到云原生 App…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
Python环境安装与虚拟环境配置详解
本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南,适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者,都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...
