Python补充笔记2-函数

news2024/12/27 17:44:41

目录

一、函数​编辑

二、函数的创建和调用​编辑 

三、函数的参数传递​编辑

四、参数传递的内存分析​编辑

五、函数的返回值​编辑

六、函数的参数定义

默认值参数

七、函数的参数总结​编辑

八、变量的作用域​编辑

九、递归函数

十、斐波那契数列

十一、知识点总结​编辑

一、函数

二、函数的创建和调用 

def calc(a,b):
    c=a+b
    return c
 
result=calc(10,20)
print(result)#30

三、函数的参数传递

四、参数传递的内存分析

1.函数调用中,不一定非要保持参数名是一样的,不同也是可以的,如下面代码n1,n2对应函数中的arg1,arg2。

2.在函数调用过程中,进行参数的传递,

如果是不可变对象,在函数体内的修改不会影响实参的值,如下面代码中的n1=11,哪怕在函数调用中修改为了100,但是最后打印输出还是11。

如果是可变对象,修改形参影响实参,如下面代码中的列表在函数中修改后,最后的打印输出也变了。

不可变类型(数字,字符串,元组,不可变集合):不支持原处修改。

def fun(arg1,arg2):
    print('arg1=',arg1)
    print('arg2=',arg2)
    arg1=100
    arg2.append(10)
    print('arg1=',arg1)
    print('arg2=',arg2)
    #return   #这里没有返回值,所以不写也是没问题的
 
n1=11    #在函数中虽然改变为100,但是最后输出还是11
n2=[22,33,44]
print('n1=',n1)
print('n2=',n2)
print('+++++++++++++')
fun(n1,n2)
print('n1=',n1)
print('n2=',n2)
# n1= 11
# n2= [22, 33, 44]
# +++++++++++++
# arg1= 11
# arg2= [22, 33, 44]
# arg1= 100
# arg2= [22, 33, 44, 10]
# n1= 11
# n2= [22, 33, 44, 10]

五、函数的返回值

def fun(num):
    odd=[]
    even=[]
    for i in num:
        if i%2:
            odd.append(i)
        else:
            even.append(i)
    return odd,even
 
print(fun([10,29,34,23,44,53,55]))
# ([29, 23, 53, 55], [10, 34, 44])

函数的返回值:

1.如果函数没有返回值(函数执行完毕后,不需要给调用出提供数据),return可以省略不写

2.函数的返回值,如果是1个,直接返回原值类型

3.函数的返回值,如果是多个,返回的结果为元组

4 函数在定义时,是否需要返回值,视情况而定

def fun():
    print('hello')

fun()
#hello
def fun2():
    return 'hello'

res=fun2()
print(res)
#hello
def fun3():
    return 'hello','python'
print(fun3())
#('hello', 'python')

六、函数的参数定义

默认值参数

def fun(a,b=10):
    print(a,b)
 
fun(100)
fun(20,30)
# 100 10
# 20 30

个数可变的位置参数,只能是一个

个数可变的关键字参数,只能是一个

既有个数可变的位置形参,也有个数可变的位置形参时,个数可变的位置形参要放在个数可变的关键字形参之前

def fun(*args):#可变的位置参数
    print(args)
 
fun(10)
fun(60,20,30)
# (10,)
# (60, 20, 30)
 
def fun(**args):#可变的关键字形参
    print(args)
 
fun(a=10)
fun(a=50,b=30,c=100)
# {'a': 10}
# {'a': 50, 'b': 30, 'c': 100}

七、函数的参数总结

def fun(a,b,c):#形式参数
    print('a=',a)
    print('b=',b)
    print('c=',c)
 
fun(10,20,30)#函数调用时的参数传递,称为位置实参传参
lst=[11,22,33]
fun(*lst) #在函数调用时,将列表中的每个元素都转换为位置实参传入
 
fun(a=100,b=200,c=300)#函数的调用,关键字实参
dic={'a':111,'b':222,'c':333}
fun(**dic)#在函数调用时,将字典的键值对都转换为关键字实参传入
# a= 10b= 20c= 30
# a= 11b= 22c= 33
# a= 100b= 200c= 300
# a= 111b= 222c= 333
 
def fun(a,b=10):#b是在函数的定义处,且进行了赋值,是默认值形参
    print('a=',a)
    print('b=',b)
def fun2(*args):#个数可变的位置形参
    pass
def fun3(**args):#个数可变的关键字形参
    pass
def fun4(a,b,*,c,d):#关键字形参:从*之后的参数,在函数调用时,只能采用关键字参数传递
    print('a=',a)
    print('b=',b)
    print('c=',c)
    print('d=',d)
 
fun4(10,20,c=30,d=40)#前两个参数位置实参,后两个参数关键字实参传递
# a= 10
# b= 20
# c= 30
# d= 40

八、变量的作用域

九、递归函数

def fac(n):
    if n==1:
        return 1
    else:
        res=n*fac(n-1)
        return res
print(fac(6))

十、斐波那契数列

def fib(n):
    if n==1:
        return 1
    elif n==2:
        return 1
    else:
        return fib(n-1)+fib(n-2)
 
print(fib(6))#第六位
 
#前六位
for i in range(1,7):
    print(fib(i),end='\t')
# 8
# 1	1	2	3	5	8	

十一、知识点总结

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

A7二极管-ASEMI迷你封装整流管A7二极管

编辑:ll A7二极管-ASEMI迷你封装整流管A7二极管 型号:A7二极管 品牌:ASEMI 封装:SOD-123 正向电流:1A 反向耐压:1000V 芯片大小:60MIL 芯片个数:1 引脚数量:2 …

将监控摄像头的监控视频放在网页或APP中无插件播放

需求 1)将监控摄像头的监控视频集成到网页中,实现无插件播放,监控摄像头可以是海康、大华、TPLink等 2)将监控视频集成到业务平台中播放,包括网页、微信公众号、小程序、APP等形态 3)远程调取内网里的摄像头视频,实现远程监控 实现…

git rebase 合并提交

一. 合并提交步骤 git log --oneline 查看当前提交记录 git rebase -i HEAD~2 选择最后提交的2条记录进行合并进入编辑界面,将c865404的pick改为f, 表示向前合并也就是向cc5a54合并 编辑完之后:wq 保存并退出git rebase --continuegit push --force origin feature/v1.2 推送…

12. 一些开发中遇到的SQL问题

文章目录 一些开发中遇到的SQL问题1. sql报11090错误,原因可能是以下错误,在?占位符后有一个空格2. 占位符?的位置不能是表名,否则会无法进行预编译3. mysql中desc是关键字,如果字段名称为desc会报错4. 数据库中时间格…

【已解决】天翼电信宽带改桥模式,使用路由器ppoe拨号

运营商在给办理宽带时会默认给宽带设置成光猫ppoe拨号,路由器只需设置为dhcp获取ip,插入到光猫的lan口即可上网。但运营商的光猫路由性能有限,会影响到网络体验。而将光猫设置为桥模式,使用路由器拨号,可以实现路由器进…

vue树组件循环表格

最近做项目需要实现循环表格这个需求&#xff0c;其中实用到了循环组件&#xff0c;特此记录一下&#xff0c;这是需要实现的功能&#xff0c;如下图&#xff1a; vue中实现组件循环 父组件 <template><div><ul><li v-for"(item,index) in aside…

Zabbix 自动发现及注册

1、依次选择 Configuratio、Discovery、Create discovery rule&#xff08;配置、自动发现、创建发现规则&#xff09; 创建客户端发现规则 2、zabbix客户端安装 agent zabbix客户端一键安装脚本 脚本参考链接 #!/bin/bash #Zabbix-Agent 5.0Zabbix_Service192.168.63.20#安…

2023牛客暑期多校训练营1(D/H/J/K/M)

目录 D.Chocolate H.Matches J.Roulette K.Subdivision M.Water D.Chocolate 思路&#xff1a;当n1且m1时候先手必输&#xff0c;然后1*k&#xff08;k>2&#xff09;的情况下后手必输&#xff0c;因为先手可以选到只剩下一个格子。而在其它情况里先手第一步可以先选(…

使用对象解构赋值,将对象的某些属性赋值给另一个对象

在处理接口返回的数据时&#xff0c;我需要将接口返回的数据&#xff08;对象&#xff09;的某些属性用另一个对象进行接收&#xff0c;学习对象解构赋值之前&#xff0c;我一直使用的都是最笨的方法&#xff1a; this.formData.projectId res.data.projectId this.formData.…

奖牌数领跑是为何?解码长沙华中医卫科技中等职业学校的国防教育成功之道

近些年&#xff0c;越来越多的学生、家长、企业开始重新审视职业教育的价值。在产教融合的大背景下&#xff0c;职业教育已经成为了高新产业发展的人才引擎&#xff0c;职业教育的教学模式、软硬件配置乃至未来毕业生的就业情况&#xff0c;已完全变了模样。 实际上&#xff0…

Linux环境下的开发工具(yum、vim、gdb、make/Makefile)

目录 yum vim GDB调试 Makefile yum 在Linux系统上安装软件的方式有 下载到程序的源代码&#xff0c;自行进行编译&#xff0c;得到可执行程序。 获取rpm安装包&#xff0c;通过rpm命令进行安装。&#xff08;未解决软件的依赖关系&#xff09; 通过yum进行安装软件。&…

Android APP性能及专项测试

Android篇 1. 性能测试 Android性能测试分为两类&#xff1a; 1、一类为rom版本&#xff08;系统&#xff09;的性能测试 2、一类为应用app的性能测试Android的app性能测试包括的测试项比如&#xff1a; 1、资源消耗 2、内存泄露 3、电量功耗 4、耗时 5、网络流量消耗 6、移动…

evenloop事件循环机制

宏任务&#xff1a;script&#xff08;整体代码&#xff09;&#xff0c;setTimeout&#xff0c;setInterval&#xff0c;setImmediate&#xff0c;i/o&#xff0c;UIrendering 微任务&#xff1a;promise&#xff0c;async/await&#xff0c;Object.observe&#xff0c;Mutati…

Leetcode-每日一题【19.删除链表的倒数第N个结点】

题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1输出&#xff1a;[] 示例 3&#x…

没有人能真正精通C++

任何说自己很懂C的人可能都是在夸大其词。 我想你可能已经注意到了&#xff0c;是的&#xff0c;今天的大多数程序员都在使用Python、Rust、Go或是其他新的编程语言。大部分人已经不再需要掌握C、C等古老的编程语言了&#xff0c;甚至很多程序员已经从手动编码开始向AI编码转型…

050、事务设计之Percolator事务模型

Percolator 背景 Bigtable: 大表打散每行到各个节点&#xff0c;每一行作为一个kv。解决的问题 一个事务涉及的行在多个节点&#xff0c;如何用单行对一个事务进行控制&#xff0c;实现原子性。 快照隔离级别&#xff08;snapshot &#xff09; 白色点&#xff1a;代表事务开始…

.Net5 mvc项目UseBrowserLink插件功能失效的原因

前期基于.Net Framework创建的Web项目&#xff0c;使用了BrowserLink插件协助前端开发&#xff0c;功能一直都比较稳定&#xff0c;后来项目迁到.Net5 &#xff0c;发现BrowserLink 已经失去了从浏览器定位到项目源代码的功能&#xff0c;希望在后面的版本还能继续支持此版本&a…

分区类型ID一键变身!快速改变分区类型ID的简单方法

分区类型ID是什么&#xff1f; 想要改变分区类型ID&#xff0c;先得明白分区类型ID是什么。大多数电脑用户可能只熟悉分区和分区类型&#xff0c;实际上有5种分区类型&#xff1a;主分区、可扩展固件接口&#xff08;EFI&#xff09;、扩展分区、逻辑分区和Microsoft保留分…

gitbash2.41安装教程——2023.07

文章目录 1、下载安装包2、安装 1、下载安装包 进入官网下载&#xff0c;官网链接 上面有多种系统可以选择&#xff0c;我是windows&#xff0c;点击windows进行下载 这里可以直接下载最新版本的git 2.41.0 64位。 下载可能有点慢&#xff0c;耐心等待。 2、安装 下载完…

什么是云应用程序?

应用程序优先的云服务的日益普及导致应用程序与云服务的融合程度比以前更深。应用程序和云之间的运行时边界正在从虚拟机转移到容器和函数。集成边界正在从仅访问数据库和消息代理转向应用程序的机械部分混合并在云中运行的边界。在这个最终架构中&#xff0c;应用程序是“云绑…