python06-函数内存图、作用域、实参、形参
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python06-函数内存图、作用域、实参、形参,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3170字,纯文字阅读大概需要5分钟。
内容图文
一、函数内存图
1 """ 2 函数内存图 3 练习:exercise06.py 4 练习:exercise07.py 5 15:40 6 """ 7 8 # 在方法区中存储函数代码,不执行函数体 9 def fun01(a): 10 a = 100 11 12 num01 = 1 13 # 因为调用函数,所以开辟一块内存空间,叫做栈帧 14 # 用于存储在函数内部定义的变量(包含参数). 15 fun01(num01) 16 # 函数执行完毕后,栈帧立即释放(其中定义的变量也会销毁). 17 print(num01)#1 18 19 def fun02(a): 20 # 改变的是传入的可变对象 21 a[0] = 100 22 23 list01 = [1] 24 fun02(list01) 25 print(list01[0])# 100 26 27 def fun03(a): 28 # 改变的是fun03栈帧中变量a的指向 29 a = 100 30 31 32 list01 = [1] 33 fun03(list01) 34 print(list01[0])# 1 35 36 37 def fun04(a): 38 a[1] = [200] 39 40 list01 = [1,[2,3]] 41 fun04(list01) 42 print(list01[1])# [200]
二、作用域
1 """ 2 作用域 3 练习:exercise08.py 4 """ 5 # 全局变量 6 g01 = "ok" 7 8 # print(l01) 9 def fun01(): 10 # 局部变量:在函数内部定义的变量 11 l01 = 100 12 # print(l01) 13 print(l01) 14 # 在函数内部可以读取全局变量 15 # print(g01) 16 17 # 创建了一个局部变量g01,而不是修改全局变量 18 # g01 = "no" 19 20 # 定义全局变量g01 21 global g01 22 # 此时修改的是全局变量 23 g01 = "no" 24 print(g01) 25 # 定义全局变量g02 26 global g02 27 g02 = 250 28 29 30 fun01() 31 32 print(g01) # ? 33 34 print(g02)
三、实参
1 """ 2 函数参数 3 实际参数 4 """ 5 6 7 def fun01(a, b, c, d): 8 print(a) 9 print(b) 10 print(c) 11 print(d) 12 13 # 17:00 14 # 位置实参:实参与形参根据位置进行依次对应. 15 # fun01(1, 2, 3, 4) 16 17 # 关键字实参:实参与形参根据名称进行对应 18 # fun01(b=1, d=2, c=3, a=4) 19 20 # 序列实参:星号将序列拆分后按位置与形参进行对应 21 # 如果参数很多,可以存储在序列(字符串/列表/元组)中, 22 # 再通过*拆分,直接传入函数. 23 # list01 = ["a","b","c","d"] 24 # fun01(*list01) 25 26 # 字典实参:双星号将字典拆分后按名称与形参进行对应 27 # 如果参数很多,可以存储在字典中, 28 # 再通过**拆分,传入函数. 29 dict01 = {"a": 1, "c": 3, "d": 4, "b": 2} 30 fun01(**dict01)
四、形参
1 """ 2 函数参数 3 形式参数 4 练习:exercise09.py 5 练习:exercise10.py 6 """ 7 8 9 # 1. 缺省(默认)形参:如果实参不提供,可以使用默认值. 10 def fun01(a=None, b=0, c=0, d=0): 11 print(a) 12 print(b) 13 print(c) 14 print(d) 15 16 17 # 关键字实参 + 缺省形参:调用者可以随意传递参数. 18 # fun01(b=2, c=3) 19 20 # 2. 位置形参 21 def fun02(a, b, c, d): 22 print(a) 23 print(b) 24 print(c) 25 print(d) 26 27 28 # 3.星号元组形参: * 将所有实参合并为一个元组 29 # 作用:让实参个数无限 30 def fun03(*args): 31 print(args) 32 33 34 # fun03()# () 35 # fun03(1)# (1,) 36 # fun03(1,"2")# (1, '2') 37 38 # 4.命名关键字形参:在星号元组形参以后的位置形参 39 # 目的:要求实参必须使用关键字实参. 40 def fun04(a, *args, b): 41 print(a) 42 print(args) 43 print(b) 44 45 46 fun04(1, b=2) 47 fun04(1, 2, 3, 4, b=2) 48 49 50 def fun05(*, a, b): 51 print(a) 52 print(b) 53 54 55 fun05(a=1, b=2) 56 57 58 # 5. 双星号字典形参:**目的是将实参合并为字典. 59 # 实参可以传递数量无限的关键字实参. 60 def fun06(**kwargs): 61 print(kwargs) 62 63 64 fun06(a=1, b=2)
内容总结
以上是互联网集市为您收集整理的python06-函数内存图、作用域、实参、形参全部内容,希望文章能够帮你解决python06-函数内存图、作用域、实参、形参所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。