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)

关于函数的局部变量与全局变量相关推荐

  1. static作用(修饰函数、局部变量、全局变量)

    C语言:static作用(修饰函数.局部变量.全局变量) 一. static全局变量与普通的全局变量有什么区别 ? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.   全局 ...

  2. C语言:static作用(修饰函数、局部变量、全局变量)

    C语言:static作用(修饰函数.局部变量.全局变量) 一. static全局变量与普通的全局变量有什么区别 ? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.  全局变 ...

  3. Python基础day05【函数(局部变量、全局变量、多函数执行流程、函数返回值、函数参数)、拆包、引用、可变与不可变类型、函数注意事项】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day05[函数(函数传参的两种形式.函数形参).拆包.引用.可变与不可变类型.引 ...

  4. static关键字(修饰函数、局部变量、全局变量)

    在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有 ...

  5. 6.2、C++的内联函数、函数重载、局部变量和全局变量

    内联函数 函数重载 局部变量和全局变量

  6. C语言函数(函数嵌套、递归调用)+局部变量和全局变量+extern关键字的使用+Visual Studio简单的使用教程+数据存储类别+内部函数外部函数

    上一篇文章:编译预处理知识点梳理:宏定义+文件包含+条件编译 C语言函数(函数嵌套.递归调用--+局部变量和全局变量+extern关键字的使用+Visual Studio简单的使用教程+数据存储类别+ ...

  7. Python老男孩 day15 函数(二) 局部变量与全局变量

    https://www.cnblogs.com/linhaifeng/articles/6113086.html -------------------------------------- 五.局部 ...

  8. static--修饰(局部变量、全局变量、函数)

    文章转载链接: https://blog.csdn.net/Payshent/article/details/70242965 在我们刚开始接触接触C语言的时候一定听说过static关键字,在刚开始学 ...

  9. python 函数递归一次增加一次变量_python基础之函数、返回值,局部变量、全局变量,递归(继续补充不定长参数)...

    1.python中函数定义:函数是逻辑结构化和过程化的一种编程方法.(完成某一种特定的功能) def test02(): #"" msg = 'hello WuDaLang' re ...

最新文章

  1. 在Server 2003上部署IIS+PHP+MySQL配置清单
  2. “GANs之父”Ian Goodfellow被爆已从Google离职
  3. 深度学习调参有哪些技巧?
  4. 一套就够了!室内+室外激光SLAM关键算法讲解与工程实现(源码和数据开源)...
  5. Lesson11 vSphere VUM
  6. 读取SBT项目resources目录中的文件
  7. fpga运算服务器_一张图了解CPU、GPU、ASIC、FPGA性能、功耗效率、灵活性
  8. 清华大学python镜像_使用清华开源镜像安装tensorflow
  9. java反射用法示例_Java包| 类型,用法,示例
  10. ACL+NAT实现PC单向访问
  11. react引入外部js_React.js:无需使用外部库即可实现拖放功能
  12. php 数组的处理,php 数组处理
  13. 剑指offer面试题[40]-数组中只出现一次的数字
  14. 如何设置计算机休眠播放幻灯片,如何设置电脑休眠屏保幻灯片
  15. 电脑网络中看到不工作组计算机,win7系统看不到工作组计算机怎么办?win7系统看不到工作组计算机解决方法...
  16. 阿里云数据库开源发布:PolarDB 三节点高可用的功能特性和关键技术
  17. 2 HTML常用标签标签嵌套和并列关系
  18. 《实现领域驱动设计》 (美)弗农著 14章 应用程序
  19. ps图片拖不进去_win10中ps图片不能拖进去怎么办-修复ps无法直接拖入的教程 - 河东软件园...
  20. 基于S-FFT的相息图

热门文章

  1. 经典软件测试基础面试问答
  2. 捆绑保险的同时,平安汽车金融还站着把利息收了?
  3. 53 两数组的交集(Intersection of Two Arrays)
  4. c语言 指针函数pdf,c语言函数,指针与数组.pdf
  5. 2022上海区块链国际周将全程线上举办,直播预约已开启
  6. jsp mysql oracle_Jsp 连接 mySQL、Oracle 数据库备忘
  7. [贝聊科技]谈谈 iOS 如何动态切换 APP 的主题
  8. 荣耀magic5至臻版参数 荣耀magic5至臻版评测
  9. Git:SSH 公钥
  10. 迪丽热巴晒可爱自拍 大眼wink卖萌电力十足