Python知识点10---函数
提前说一点:如果你是专注于Python开发,那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了,而如果你和作者一样只是操作其他技术的Python API那就足够了。
Python的函数和Scala的函数很像,语法很简单,注意点如下
1、函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
2、任何传入参数必须放在圆括号中间,圆括号之间可以用于定义参数。
3、函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
4、函数内容以冒号起始,并且缩进。
5、return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。例如:
def functionname( parameters ):"函数_文档字符串"function_suitereturn [expression]
Python的函数其实在开发中,有一些会迷茫的点,这里我总结起来给大家说一下
1、函数的参数有多种写法,后面我会给大家罗列知识点,不过要知道Python的变量是一种弱检查,说白了就和js一样,名称只是数据的引用,而不会有类型的限制,所以导致大家书写的时候可能会很别扭
2、在Python中,函数必须先定义在调用,不能像c++那样声明函数
3、对于Python来说,同样遵行形参和传参的准则,但是Python更加详细的区分了值传递和地址传递,其中字符串、元组 和 数值是不可更改的对象,也就是我们常识的值传递,而列表、字典这些容器则是可以修改的对象,也就是地址传递,集合和布尔是两个特殊的数据类型不在考虑范围内
Python函数的参数,也有不同的叫法。
一、必备参数
必备参数就是我们常用的那种,写在参数位中,且对于方法体必不可少的参数
可写函数说明
def printme( str ):print str调用printme函数
printme()上面这个例子中没有传递必备参数str,所有执行的时候会报错
Traceback (most recent call last):File "test.py", line 11, in <module>printme()
TypeError: printme() takes exactly 1 argument (0 given)
二、关键字参数
关键字参数,是指Python允许通过形参名称指定传入参数,忽略列常规写法中的顺序概念
def printme( str , index) :print str#调用printme函数
printme(index = 1 , str = 'My Tom')
三、默认参数
默认参数,是指该参数拥有默认值,使得该参数可以不用传递
def printme( str , index = 1) :print str#调用printme函数
printme(str = 'My Tom')
四、不定长参数
不定长参数,说的其实就是可变参,底层原理是一个容器,可变参定义的时候由星号开头
def printinfo( *vartuple ):for var in vartuple:print var# 调用printinfo 函数
printinfo( 70, 60, 50 )
不过在Python开发中大家可能会见到两个星号开头的参数,其实这个也叫可变参,只不过底层的实现容器不一样
一个星号的时候是普通的可变参,它的底层实现是一个元组
def printinfo( *vartuple ):print vartuple# 调用printinfo 函数
printinfo( 70, 60 )结果:(70, 60)
两个星号的时候叫做含关键字的可变参,它的底层是字典
def printinfo( **vartuple ):print vartuple# 调用printinfo 函数
printinfo( name=70, age=60 )结果:{'age': 60, 'name': 70}
除了常规的函数,Python也支持默认函数,原理是lambda表达式
sum = lambda arg1, arg2: arg1 + arg2
print(sum(1,1)) ---输出2
Python也可以写递归函数,不过我这里就不写了,毕竟递归大家都知道是怎么回事,函数调用自身而已
同时Python函数的返回值任然是return关键字
def sum( arg1, arg2 ):return arg1+arg2# 调用sum函数
total = sum( 10, 20 )print(total)
Python的返回值还支持拆包操作,就是返回多个返回值
def num():return 100 , 200# 调用printinfo 函数
num1 , num2 = num()print(num1)
print(num2)
这里针对拆包说一句题外话,拆包不止可以作用在返回值上,还可以在平常操作中进行,必须我们写for循环遍历字典的时候遍历用的变量有两个,那就是一种拆包操作
不过对于字典我们其实可以直接拆包
a = {"name" : "Tom" , "age" : 12}
b , c = a
print(b) ---key
print(c)
print(a[b]) ---value
print(a[c])
当然与函数相关联的局部变量、全局变量的概念我相信大家都知道,我这里就不给大家解释了,给大家准备了一个例子
total = 0 # 这是一个全局变量
# 可写函数说明
def sum( arg1, arg2 ):#返回2个参数的和."total = arg1 + arg2 # total在这里是局部变量.print "函数内是局部变量 : ", totalreturn total#调用sum函数
sum( 10, 20 )
print "函数外是全局变量 : ", total
相关文章:
Python知识点10---函数
提前说一点:如果你是专注于Python开发,那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了,而如果你和作者一样只是操作其他技术的Python API那就足够了。 Python的函数和Scala的函数很像,语法很简单,注…...

有哪些挣钱软件一天能赚几十元?盘点十个能长期做下去的挣钱软件
在这个信息爆炸的时代,每个人都在寻找快速赚钱的秘诀。很多人做兼职副业的目标并不是获得很大的成功,大部分人一天能赚几十就心满意足了。 今天,我要带你一探究竟,揭秘那些能让你日赚几十元的挣钱软件。准备好了吗?让我…...
CentOS7安装MySQL教程
第一章 检查是否安装了Mysql 1.1 yum检查 yum list installed | grep mysql 1.2 安装则直接删除 yum remove xxx 1.3 rpm检查 rpm -qa | grep -i mysql # 有则直接删除 rpm -e --nodeps xxx 第二章 正式安装MySQL 2.1 yum安装,下载mysql wget --no-check-ce…...

师彼长技以助己(3)逻辑思维
师彼长技以助己(3)逻辑思维 前言 上一篇文章进行了工程思维和产品思维的测试,并介绍了几个比较重要的产品思维模型。接下来本篇介绍工程思维。(注意产品思维并不代表产品经理思维,工程思维也并不代表工程师思维&…...
LeetCode:反转链表I
文章收录于LeetCode专栏 LeetCode地址 反转链表I 题目 给你单链表的头节点head,请你反转链表,并返回反转后的链表。 示例 1: #mermaid-svg-IYmD16EKuu3CZWwV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size…...
oracle linux7安装oracle11g0204
1、平时需要修改 /etc/redhat-release文件为Red Hat Enterprise Linux 7,这次不需要了。 2、关闭selinx nano /etc/selinux/config 改为disabled 3、nano /etc/hosts 修改解析 在oracle服务器中增加 /etc/hosts中一个对应 192.168.1.10 CLOUD-MC-SQL1 4、修改系统文件 /…...

STM32--ADC
一、简介 *ADC(Analog-Digital Converter)模拟-数字转换器 *ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁 *12位逐次逼近型ADC,1us转换时间 *输入电压范围:0~3.3V&…...
【TB作品】msp430f149单片机,读取ds18b20温度,显示到数码管,串口发送温度到电脑
功能 msp430f149单片机 读取ds18b20温度,显示到数码管,串口发送温度到电脑 部分程序 /************************************************* * 程序功能:用DS18B20测量室温并在数码管上显示。 * --------------------------------------…...
vue组合式和选项式
Vue中的组合式(Composition API)和选项式(Options API)是两种不同的编写组件逻辑的方法。 组合式API(Composition API): 使用函数来定义组件逻辑,可以更灵活地重用和组合逻辑。使用setup函数作为组件的入口点,在这里可以访问pro…...
使用OpenCV创建全景图像
使用OpenCV创建全景图像 前言图像拼接策略创建全景图像相关链接前言 在本节中,我们将学习组合多个图像来创建全景图像。使用相机拍摄全景照片时,通常会拍摄多张照片,通过算法将这些图像中共同存在的元素(从左到右)映射到一张单独的图像中。为了执行图像的拼接,将利用 cv2 …...

Nios II 实现流水灯实验
Nios II 实现流水灯实验 一.硬件设计1.新建Quartus项目2. 设计Nios ii 二.软件设计 前言 实验目标: 学习 Quartus 、Platform Designer、Nios-II SBT 的基本操作;初步了解 SOPC 的开发流程,基本掌握 Nios-II 软核的定制方法;掌握 …...

Spring boot 随笔 1 DatasourceInitializer
0. 为啥感觉升级了 win11 之后,电脑像是刚买回来的,很快 这篇加餐完全是一个意外:时隔两年半,再看 Springboot-quartz-starter 集成实现的时候,不知道为啥我的h2 在应用启动的时候,不能自动创建quartz相关…...

vue3_组件间通信方式
目录 一、父子通信 1.父传子( defineProps) 2.父传子(useAttrs) 3.子传父(ref,defineExpose ) 4.子传父(defineEmits) 5.子传父(v-model) …...

mysql的锁(全局锁)
文章目录 mysql按照锁的粒度分类全局锁概念:全局锁使用场景:全局锁备份案例: mysql按照锁的粒度分类 全局锁 概念: 全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是: Flush tables with…...

Spring Boot 整合开源 Tess4J库 实现OCR图片文字识别
😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…...
使用 Docker 和 Docker Compose 部署 Vue
使用 Docker 和 Docker Compose 部署 Vue 项目有两种方式:直接使用 Docker 和使用 Docker Compose。 创建 Dockerfile 在Vue.js项目根目录下创建一个 Dockerfile 的文件 # 使用最新的官方 Node.js 镜像作为基础镜像,并命名为 builder 阶段 FROM node:…...
力扣linkedlist
反转链表、 public class reverseList { // 1->2->3->o 、 o<-1<-2<-3public ListNode reverseList(ListNode head){//反转链表ListNode prevnull;ListNode currhead;while(curr!null){ListNode nextcurr.next;curr.nextprev;prevcurr;currnext;}retu…...
springboot 启动原理、启动过程、启动机制的介绍
Spring Boot 是一种基于 Java 的框架,用于创建独立的、生产级别的 Spring 应用程序。它的主要目标是简化 Spring 应用的初始搭建和开发过程,同时提供一系列大型项目常见的非功能性特征(如嵌入式服务器、安全性、度量、健康检查和外部化配置)。以下是 Spring Boot 的一些核心…...

大模型ChatGLM的部署与微调
前言:最近大模型太火了,导师让我看看能不能用到自己的实验中,就想着先微调一个chatGLM试试水,微调的过程并不难,难的的硬件条件跟不上,我试了一下lora微调,也算跑通了吧,虽然最后评估…...
全球七家半导体工厂建设受阻:英特尔、三星、台积电等面临延期挑战
过去两年间,半导体行业经历了市场衰退、复苏慢于预期以及资金紧缩等问题,英特尔、台积电和三星等主要企业虽然继续推进扩张计划,但不断调整和放缓工厂建设的步伐与时间表,以更好地服务于长期发展目标。据统计,全球范围…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
前端调试HTTP状态码
1xx(信息类状态码) 这类状态码表示临时响应,需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分,客户端应继续发送剩余部分。 2xx(成功类状态码) 表示请求已成功被服务器接收、理解并处…...