关于函数的局部变量与全局变量
1,函数体外的变量,为全局变量,可以在函数体内调用
t = 1
def f1():print(t)
f1()
输出结果
E:\software\work\python\python.exe "E:/Project/Python/Math Adventures with Python/test.py"
1Process finished with exit code 0
2,当函数体内定义了一个相同变量名的变量时,优先调用函数内的变量
t = 1
def f1():t = 200print(t) # 访问的是函数体内的变量
f1()
print(t) #访问的是函数体外的变量
输出
E:\software\work\python\python.exe "E:/Project/Python/Math Adventures with Python/test.py"
200
1Process finished with exit code 0
3,如果在函数体内声明了全局变量,则函数体外的同名变量也会修改
t = 1
def f1():global tt = 200print(t)#函数内可以访问外部变量,但函数内的变量,函数外不可以访问
f1()
print(t)
输出:
E:\software\work\python\python.exe "E:/Project/Python/Math Adventures with Python/test.py"
200
200Process finished with exit code 0
4,声明全局变量应对局部变量声明.即,在函数体外声明全局变量没有效果,因为函数体外的变量是全局变量
global t
t = 1
def f1():t = 200print(t)#函数内可以访问外部变量,但函数内的变量,函数外不可以访问
f1()
print(t)
结果:
E:\software\work\python\python.exe "E:/Project/Python/Math Adventures with Python/test.py"
200
1Process finished with exit code 0
5,如果在迭代中,想要有一个函数内的变量可以在迭代过程中可以实现累次运算,
那么就要声明成全局变量.
这里以i的累次求和为例
i= 0
def f(n):global iif n == 1 :return 1else:i += 1return n+f(n-1)
print(f(3))
print(i)
输出:
E:\software\work\python\python.exe "E:/Project/Python/Math Adventures with Python/test.py"
6
2Process finished with exit code 0
6,在调用函数时,函数应该在调用语句之前定义,而不是之后,否则会报错.
Python中函数的定义必须在调用的前面,但是在函数的内部调用一个函数,不用考虑顺序,只要被调用的函数被定义了即可
'''
随机生成一个1-100的整数,程序来猜测数是多少,每次猜错后,会告诉程序应该猜大点还是猜小点
'''
from random import randint
# def average(a,b): #返回a,b的平均数
# return (a+b)//2
number = randint(1,100) # 生成的随机数
a = 1
b = 100
i = 1
guss_num = average(a,b)
while guss_num != number:if b-a == 1: # 如果a,b 是相邻的数,而目标数是b,那么没有这条语句就结束不了.例如:number=100guss_num += 1continueif guss_num > number:print('应该猜小点',guss_num)b = average(a,b)guss_num =average(a,b)i += 1else:print('应该猜大点',guss_num)a = average(a,b)guss_num = average(a,b)i += 1
def average(a,b): #返回a,b的平均数return (a+b)//2
print('生成的随机数是%d,共猜测%d步'%(average(a,b),i))
print(number)
其中,average()函数定义在这之前调用了average()函数,这样会报错
E:\software\work\python\python.exe "E:/Project/Python/Math Adventures with Python/3章-条件语句/猜数游戏(自己写的).py"
Traceback (most recent call last):File "E:\Project\Python\Math Adventures with Python\3章-条件语句\猜数游戏(自己写的).py", line 11, in <module>guss_num = average(a,b)
NameError: name 'average' is not definedProcess finished with exit code 1
显示average()函数未定义.
正确的代码:
'''
随机生成一个1-100的整数,程序来猜测数是多少,每次猜错后,会告诉程序应该猜大点还是猜小点
'''
from random import randint
def average(a,b): #返回a,b的平均数return (a+b)//2
number = randint(1,100) # 生成的随机数
a = 1
b = 100
i = 1
guss_num = average(a,b)
while guss_num != number:if b-a == 1: # 如果a,b 是相邻的数,而目标数是b,那么没有这条语句就结束不了.例如:number=100guss_num += 1continueif guss_num > number:print('应该猜小点',guss_num)b = average(a,b)guss_num =average(a,b)i += 1else:print('应该猜大点',guss_num)a = average(a,b)guss_num = average(a,b)i += 1
# def average(a,b): #返回a,b的平均数
# return (a+b)//2
print('生成的随机数是%d,共猜测%d步'%(average(a,b),i))
print(number)
关于函数的局部变量与全局变量相关推荐
- static作用(修饰函数、局部变量、全局变量)
C语言:static作用(修饰函数.局部变量.全局变量) 一. static全局变量与普通的全局变量有什么区别 ? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量. 全局 ...
- C语言:static作用(修饰函数、局部变量、全局变量)
C语言:static作用(修饰函数.局部变量.全局变量) 一. static全局变量与普通的全局变量有什么区别 ? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量. 全局变 ...
- Python基础day05【函数(局部变量、全局变量、多函数执行流程、函数返回值、函数参数)、拆包、引用、可变与不可变类型、函数注意事项】
视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day05[函数(函数传参的两种形式.函数形参).拆包.引用.可变与不可变类型.引 ...
- static关键字(修饰函数、局部变量、全局变量)
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有 ...
- 6.2、C++的内联函数、函数重载、局部变量和全局变量
内联函数 函数重载 局部变量和全局变量
- C语言函数(函数嵌套、递归调用)+局部变量和全局变量+extern关键字的使用+Visual Studio简单的使用教程+数据存储类别+内部函数外部函数
上一篇文章:编译预处理知识点梳理:宏定义+文件包含+条件编译 C语言函数(函数嵌套.递归调用--+局部变量和全局变量+extern关键字的使用+Visual Studio简单的使用教程+数据存储类别+ ...
- Python老男孩 day15 函数(二) 局部变量与全局变量
https://www.cnblogs.com/linhaifeng/articles/6113086.html -------------------------------------- 五.局部 ...
- static--修饰(局部变量、全局变量、函数)
文章转载链接: https://blog.csdn.net/Payshent/article/details/70242965 在我们刚开始接触接触C语言的时候一定听说过static关键字,在刚开始学 ...
- python 函数递归一次增加一次变量_python基础之函数、返回值,局部变量、全局变量,递归(继续补充不定长参数)...
1.python中函数定义:函数是逻辑结构化和过程化的一种编程方法.(完成某一种特定的功能) def test02(): #"" msg = 'hello WuDaLang' re ...
最新文章
- 在Server 2003上部署IIS+PHP+MySQL配置清单
- “GANs之父”Ian Goodfellow被爆已从Google离职
- 深度学习调参有哪些技巧?
- 一套就够了!室内+室外激光SLAM关键算法讲解与工程实现(源码和数据开源)...
- Lesson11 vSphere VUM
- 读取SBT项目resources目录中的文件
- fpga运算服务器_一张图了解CPU、GPU、ASIC、FPGA性能、功耗效率、灵活性
- 清华大学python镜像_使用清华开源镜像安装tensorflow
- java反射用法示例_Java包| 类型,用法,示例
- ACL+NAT实现PC单向访问
- react引入外部js_React.js:无需使用外部库即可实现拖放功能
- php 数组的处理,php 数组处理
- 剑指offer面试题[40]-数组中只出现一次的数字
- 如何设置计算机休眠播放幻灯片,如何设置电脑休眠屏保幻灯片
- 电脑网络中看到不工作组计算机,win7系统看不到工作组计算机怎么办?win7系统看不到工作组计算机解决方法...
- 阿里云数据库开源发布:PolarDB 三节点高可用的功能特性和关键技术
- 2 HTML常用标签标签嵌套和并列关系
- 《实现领域驱动设计》 (美)弗农著 14章 应用程序
- ps图片拖不进去_win10中ps图片不能拖进去怎么办-修复ps无法直接拖入的教程 - 河东软件园...
- 基于S-FFT的相息图
热门文章
- 经典软件测试基础面试问答
- 捆绑保险的同时,平安汽车金融还站着把利息收了?
- 53 两数组的交集(Intersection of Two Arrays)
- c语言 指针函数pdf,c语言函数,指针与数组.pdf
- 2022上海区块链国际周将全程线上举办,直播预约已开启
- jsp mysql oracle_Jsp 连接 mySQL、Oracle 数据库备忘
- [贝聊科技]谈谈 iOS 如何动态切换 APP 的主题
- 荣耀magic5至臻版参数 荣耀magic5至臻版评测
- Git:SSH 公钥
- 迪丽热巴晒可爱自拍 大眼wink卖萌电力十足