全局变量与局部变量

  约定俗成的规则:全局变量名大写,局部变量名小写。

  全局变量没有缩进,顶格写。

  如果函数的内容无global关键字,优先读取局部变量,能读取全局变量,无法重新赋值,但是对于可变类型,可以对内部元素进行操作;如果有global关键字,变量本质上就是全局的那个变量,可读取可赋值。

  风湿理论:函数即变量

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 hobby=['music','play']
4 def test():
5         hobby.append('draw')
6         print('my hobby is:',hobby)
7 test()

输出

my hobby is: ['music', 'play', 'draw']

错误示例1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 hobby=['music','play']
4 def test():
5         hobby='what'
6         global hobby  
7         print('my hobby is:',hobby)
8 test()

输出

C:\Python3.7.0\python3.exe F:/PycharmProjects/python_s3/day15/全局&局部变量.py
File "F:/PycharmProjects/python_s3/day15/全局&局部变量.py", line 6
global hobby
^
SyntaxError: name 'hobby' is assigned to before global declaration

Process finished with exit code 1

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 name='刚娘'
 4 def weihou():
 5     name='陈卓'
 6     def weiweihou():
 7         global name
 8         name='冷静'
 9     weiweihou()
10     print(name)
11 print(name)
12 weihou()
13 print(name)

输出

刚娘
陈卓
冷静

  

  nonlocal指定上一级变量

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 name='刚娘'
 4 def weihou():
 5     name='陈卓'
 6     def weiweihou():
 7         nonlocal name
 8         name='冷静'
 9     weiweihou()
10     print(name)
11 print(name)
12 weihou()
13 print(name)

输出

刚娘
冷静
刚娘

函数递归

  一个函数在自己内部调用自己。

  函数反复调用不叫循环,叫递归。栈保存,占用内存。箱子里套箱子,无限套,总会有极限。递归到最后以后一层层返回

  特性:

    ——必须有一个明确的结束条件

    ——每进入更深一层递归时,问题规模相比上次递归都应有所减少

    ——递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧,由于栈的大小不是无限的,所以,递归调用次数过多会导致栈溢出)

转载于:https://www.cnblogs.com/chenyuan-1995/p/9660974.html

Python全栈Day 15部分知识点相关推荐

  1. 最新《老男孩Python全栈开发15期VIP项目实战》

    下载地址: 百度网盘 ├─day01 │  │  01(1).pdf │  │  01.pdf │  │   │  ├─code │  │      01 今日主要内容 │  │      01 今日 ...

  2. python学习之老男孩python全栈第九期_day019知识点总结——collections模块、时间模块、random模块、os模块、sys模块...

    一. collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:namedtuple.deque.Counte ...

  3. python全栈开发 * 22 面向对象 知识点汇总 * 180703

    22 面向对象 -----属性,类方法,静态方法,反射一.属性1.属性的定义:将方法伪装成属性,虽然在代码层面上没有任何高深之处,但让其看起来更合理. (类似于属性的方法)class Person: ...

  4. python学习之老男孩python全栈第九期_day024知识点总结——单继承、多继承

    一. 单继承 class A:pass # 父类,也叫基类,也叫超类 class B:pass # 父类,也叫基类,也叫超类 class AB_son(A,B):pass # 子类,也叫派生类 cla ...

  5. 老男孩python第14期_python学习之老男孩python全栈第九期_day014知识点总结

    # 迭代器和生成器 # 迭代器 # 双下方法:很少直接调用的方法,一般情况下,是通过其他语法触发的 # 可迭代的 --> 可迭代协议:含有__iter__的方法( '__iter__' in d ...

  6. python学习之老男孩python全栈第九期_day004知识点总结

    1. 列表list: 列表转换成字符串: s = 'kidd' s1 = '_'.join(s) # 用_连接 字符串转换成列表: split() range(头,尾,步长): [0,1,2,3,4, ...

  7. 老男孩python第九期_python学习之老男孩python全栈第九期_day004知识点总结

    1. 列表list: 列表转换成字符串: s = 'kidd' s1 = '_'.join(s) # 用_连接 字符串转换成列表: split() range(头,尾,步长):[0,1,2,3,4,5 ...

  8. Python全栈开发记录_第一篇(循环练习及杂碎的知识点)

    Python全栈开发记录只为记录全栈开发学习过程中一些难和重要的知识点,还有问题及课后题目,以供自己和他人共同查看.(该篇代码行数大约:300行) 知识点1:优先级:not>and 短路原则:a ...

  9. Python全栈工程师-第15周-韦玮-专题视频课程

    Python全栈工程师-第15周-382人已学习 课程介绍         Python全栈工程师-第15周 课程收益     Python全栈工程师 讲师介绍     韦玮 更多讲师课程     企 ...

最新文章

  1. Spring 学习笔记
  2. 超越YOLOv5,1.3M超轻量,高效易用,目标检测领域这一个就够了
  3. (六)Vue3.0预学习
  4. for和foreach
  5. Flask 框架下 Jinja2 模板引擎高层 API 类——Environment
  6. [Unity2018.3新功能]Prefab嵌套和变体
  7. max os取消开机启动
  8. Learn OpenGL(七)——OpenGL中使用着色器的基本步骤及GLSL渲染简单示例
  9. DataTable 和 DataView 的理解
  10. How to study Watir?
  11. SRM596 DIV2 500
  12. ANSI SQL 定义
  13. win10显示隐藏文件_u盘内隐藏文件怎么显示 u盘内隐藏文件显示方法【详细步骤】...
  14. php 应用截图,PHP实现网页截图?
  15. 利用python爬虫(案例1)--某电影网站的小电影们
  16. 语音关键词检索实验小结
  17. 勒索病毒肆虐的原因分析
  18. 数据库Java项目:在线租房出租房屋系统(java+springboot+maven+mysql)
  19. 个人面试问答题知识库(一)百面机器学习篇
  20. 单循环赛贝格尔编排法实现

热门文章

  1. 机房收费系统之uml图——初版
  2. php常用20函数,PHP常用函数
  3. html5面板制作代码,HTML5绘制设备面板
  4. python查找字符串出现次数_Python 中找出字符串中出现频率最高的字母
  5. oracle rac ora 12537,解决11gR2 Rac ORA-12537: TNS:connection closed 一例
  6. python编译环境搭建_python开发环境搭建
  7. java三角形创建子类_如何创建子类,以便参数属于Java中的子类类型
  8. 习题8_6与习题9_2
  9. OpenCV中的特征匹配+单应性以查找对象
  10. 让人“眼前一亮、不明觉厉”的互联网技术PPT