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

【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)不定长参数

不定长参数:不定长参数也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景

作用:当调用函数是不确定参数个数时,可以使用不定长参数

  • 不定长参数的类型:
    1. 位置传递
    2. 关键字传递

位置传递

# 不定长传递  -位置传递
# 不定长定义的形式参数会作为元组存在,接收不定长数量的参数传入
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是元组类型,这既是位置传递

关键字传递

两个*表示:

  1. 同样,数量是不受限的
  2. 同时,内容应满足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、小结

  1. 位置参数:
    • 根据参数位置来传递参数
  2. 关键字参数:
    • 通过”键=值“形式传递参数,可以不限参数顺序
    • 可以和位置参数混用,位置参数需在前
  3. 缺省参数
    • 不传递参数值时会使用默认的参数
    • 默认值的参数必须定义在最后
  4. 不定长参数
    • 位置不定长传递 以*号标记一个形式参数,以元组的形式接受参数,形式参数一般命名为args
    • 关键字不定长传递 以**号标记一个形式参数,以字典的形式接受参数,形式参数一般命名为kwargs

相关文章:

【Python基础】Python函数(基本函数)

文章目录 Python函数1、函数多返回值2、函数多种传参方式(1)位置参数(2)关键字参数(3)缺省参数(4)不定长参数位置传递关键字传递 3、小结 Python函数 1、函数多返回值 Q&#xff1a;如果一个函数要有多个返回值&#xff0c;该如何书写代码&#xff1f; # 使用多个变量&#…...

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卖家建立属于自己的测评系统,实现批量优质账号养成

卖家搭建一套完整的测评系统&#xff0c;卖家自己能够养出批量优质账号&#xff0c;并完全掌控真实买家的浏览、加购、下单和评价等风控数据规律。我们的系统能够自主加速推广&#xff0c;防御反击&#xff0c;同时节省运营成本&#xff0c;实现高效的测评运营。 我们的系统支…...

springboot的目录结构作用

springboot单体项目结构大概如下。 代码都在src/main下&#xff0c; java是后端代码 java下最基本的包 dao(mapper) entity(model) service controller 其他的包根据项目需求扩展。 resources下是配置文件。 如果不是前后端分离&#xff0c;resources下放的是静态文件…...

微信小程序基础使用-请求数据并渲染

小程序基本使用-请求数据并渲染 小程序模板语法-数据绑定 在js中定义数据 Page({data: {isOpen: true,message: hello world!} })小程序的data是一个对象&#xff0c;不同于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一. 单选题&#xff08;共12题&#xff0c;36分&#xff09;二. 多选题&#xff08;共1题&#xff0c;3分&#xff09;三. 填空题&#xff08;共2题&#xff0c;10分&#xff09;四. 阅读理解&#xff08;共1题&#xff0c;17分&…...

C++ QT 上传图片至mysql数据库

以下是一个简单的C QT上传图片至MySQL数据库的代码示例&#xff1a; #include <QtSql> #include <QFile> #include <QByteArray> int main() { //连接数据库 QSqlDatabase db QSqlDatabase::addDatabase("QMYSQL"); …...

2023去水印小程序saas系统源码修复独立版v1.0.3+uniapp前端

&#x1f388; 限时活动领体验会员&#xff1a;可下载程序网创项目短视频素材 &#x1f388; &#x1f389; 有需要的朋友记得关赞评&#xff0c;阅读文章底部来交流&#xff01;&#xff01;&#xff01; &#x1f389; ✨ 源码介绍 一个基于uniapp写的小程序&#xff0c;后端…...

【ChatGPT】数据科学 ChatGPT Cheat Sheet 书籍分享(阿里云盘下载)

封皮 以下为书中部分内容的机器翻译 我们的重要提示指南 1. 以 AI 角色的描述开始提示。 例如&#xff0c;“你是{x}”或“我希望你扮演{x}”。如果您不确定&#xff0c;请尝试“你是一个有帮助的助手”。 例如&#xff0c;您是 OpenAI 的数据科学家&#xff0c;您正在研究大型…...

使用 Docker-compose 搭建lnmp

服务编排&#xff1a; 应用编排&#xff1a; 单机环境下&#xff1a;shell/python脚本多机/集群环境下&#xff1a;ansible、saltstack、pubbet docker容器编排&#xff1a; 单机&#xff1a;docker-compose多机/集群&#xff1a;docker swarm&#xff0c;mesos marathon&a…...

chatgpt赋能python:Python中的矩阵合并方法:介绍和使用方法

Python中的矩阵合并方法: 介绍和使用方法 矩阵合并是Python编程中常用的操作之一&#xff0c;特别是针对数据分析、机器学习和深度学习等领域。Python提供了多种方法来合并矩阵&#xff0c;本文将介绍这些方法并分享如何在实际应用中使用它们。 普通矩阵合并 最基础的矩阵合…...

Java动态代理:优化静态代理模式的灵活解决方案

文章目录 代理模式定义具体实现分析优缺点 优化使用动态代理解决优化相关知识动态代理种类场景应用 代理模式 定义 代理模式&#xff0c;为其他对象提供一种代理以控制对这个对象的访问 具体实现 代理模式的具体实现描述可以分为以下几个步骤&#xff1a; 创建抽象对象接…...

四种Bootloader程序安全机制设计

正文 大家周末好&#xff0c;我是bug菌~ 不管是玩单片机还是嵌入式linux&#xff0c;基本上都会接触到bootloader&#xff0c;所以bootloader程序也是一个关键的组件&#xff0c;进行硬件初始化&#xff0c;应用程序的合法性、完成性检测、升级功能等等都与其息息相关。 像一些…...

【DBA 警世录之习惯性命令---读书笔记】

&#x1f448;【上一篇】 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 【下一篇】&#x1f449; &#x1f53b;【&#x1f4a3; 话题引入&#xff1a;既然 DBA 这个职业如此危险&#xff0c;那么哪些习惯是 DBA 必须养成的呢&#x…...

Vue中如何进行状态持久化(LocalStorage、SessionStorage)

Vue中如何进行状态持久化&#xff08;LocalStorage、SessionStorage&#xff09;&#xff1f; 在Vue应用中&#xff0c;通常需要将一些状态进行持久化&#xff0c;以便在用户关闭浏览器或刷新页面后&#xff0c;仍能保留之前的状态。常见的持久化方式包括LocalStorage和Sessio…...

【30天熟悉Go语言】6 Go 复杂数据类型之指针

文章目录 一、前言二、数据类型总览三、指针1、特殊运算符& *2、内存角度来看指针3、使用指针修改数据4、指针使用的注意事项5、对比着看Java的引用类型 三、总结 一、前言 Go系列文章&#xff1a; GO开篇&#xff1a;手握Java走进Golang的世界2 Go开发环境搭建、Hello Wor…...

Linux内核使用红黑树的场景

进程调度队列 (Process Scheduling)&#xff1a;内核需要对进程按照一定的调度策略进行排队&#xff0c;以便更好地利用 CPU 的时间片。因此&#xff0c;内核使用红黑树作为查找和管理进程调度队列的数据结构&#xff0c;以支持快速的查找、插入和删除操作。 文件系统 (File S…...

遗留的 AppSec 工具迷失在云端

随着应用程序开发步伐的加快&#xff0c;IT 和安全团队正在对旧的应用程序安全(AppSec) 工具失去信心。 根据 Backslash 对 300 名 CISO、AppSec 经理和工程师的调查&#xff0c;遗留工具无法跟上并陷入永远的追赶游戏。 影响是深远的&#xff0c;大多数组织都看到云原生 App…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...