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. 将简历挂到云服务器网站上记
  2. ifconfig 安装_第一章Linux服务器环境搭建之JDK安装
  3. linux php-fpm优化 php-fpm.conf 重要参数详解
  4. 【Python】集合的交、并、补、差集怎么算?
  5. 2013 ACM/ICPC Asia Regional Changsha Online - C
  6. hp服务器硬盘ultra320,惠普/hp 300GB 1.5万转 3.5寸 SAS服务器硬盘 P/N:431944-B21
  7. python读取hadoop库数据_使用Python访问HDFS
  8. 鼠标自动点击脚本_613个主流网站中发现点击劫持脚本
  9. 深度学习入门:Day-11_CNN
  10. xp和win7右键新建选项排序
  11. HDU 4336:Card Collector 期望+状压
  12. 停止MySQL正在执行的SQL语句
  13. iview2.0 bug之+8 区的 DatePicker
  14. STM32入门教程第一讲
  15. JAVA获取CKplayer真是地址_[Java教程]使用CKplayer插件在网页中嵌入视频的方法(常用笔记2)...
  16. proxy代理服务器,实现跨域
  17. Cisco Aironet WLAN系列AP的瘦胖模式转换
  18. 吴恩达机器学习课后作业——偏差和方差
  19. 【Android】 Firebase登录、FCM、Google Play支付、adbrix、ONEStore、Galaxy Store、Google Install Referrer
  20. DELETE * FROM和DELETE FROM的区别

热门文章

  1. 魔兽争霸Trigger学习教程(1)
  2. 微信支付-redirect uri域名与后配置不一致10003【域名配置一致情况下问题排查】
  3. python爬虫练习2
  4. WORD出现两个mathtype解决办法,超简单
  5. 十大经典排序算法动画与解析,看我就够了!(附代码)
  6. win常见的电脑cmd命令大全
  7. mysql表设计 不同价格_电商网站商品详情页,要能选择商品属情如大小,颜色,型号等,对应不同价格,数据库应该如何设计?...
  8. 年轻人创业为何屡屡失败?有哪些方面的压力
  9. pinhe控制器,遥控器说明书
  10. 计算机原理19秋期末考核,南开大学作业《计算机原理》19秋期末考核解析100