Python学习之旅(十一)
Python基础知识(10):函数(Ⅱ)
一、全局变量和局部变量
局部变量:在函数内定义的变量,在函数内使用
全局变量:在函数外定义的变量,在程序任何地方都可以使用
1、全局变量与局部变量同名
这时函数内部只调用局部变量,如果要调用全局变量需要在函数内加一句“global 同名变量”
x=1
#x:全局变量
def test():
global x
x=5
#x:局部变量
print(x)
return x test()
结果:1
2、一个函数中的内层函数调用外层函数中的变量
内层函数调用外层函数中的变量要在内层函数中加一句“nonlocal 变量”
def demo1():
num=2
def demo2():
nonlocal num
num+=1 return demo2()
demo1() demo1()
结果:3
3、全局变量一般不可修改,如果函数中想要修改全局变量要加上“global 变量”语句
如果B函数要调用A函数中的c变量,需要在A函数内部加一句“global c”
x=1
def test1():
global x
global y
y=2
x=x+y
print(x)
return x
def test2():
print(y)
print(x) test1()
test2()
结果:
3
2
二、函数递归
1、一个函数自己调用自己
2、有明确的结束条件:加if判断
3、无穷递归:运行后它会永远运行下去,进而导致程序崩溃
4、理论上所有递归函数都可以写成循环的方式
计算阶乘
#用循环语句
def fact1(num):
result=num
for i in range(1,num):
result *=i
return result print(fact1(3)) #用递归函数
def fact2(n):
if n==1:
return 1
else:
return n*fact2(n-1) print(fact2(3))
结果:6
5、使用递归函数时要防止栈溢出,解决栈溢出的方法是通过尾递归优化
6、匿名函数
用lambda定义,只能有一个表达式,没有函数名
lambda x:x+1等价于def test(x):x+=1 retrun x
(1)可以把匿名函数赋值给一个变量,用该变量调用匿名函数
y=lambda x:x+2
y(1)
结果:3
(2)可以把匿名函数作为返回值返回
Python学习之旅(十一)的更多相关文章
- 180分钟的python学习之旅
最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时 ...
- Python学习笔记(十一)
Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...
- python学习之旅
python学习分类 python基础 +- day01——python初始.变量.常量.注释.基础数据类型.输入.if day02——while.字符串格式化.运算符.编码初识 day03—— ...
- Python学习之旅(三十一)
Python基础知识(30):图形界面(Ⅰ) Python支持多种图形界面的第三方库:Tk.wxWidgets.Qt.GTK等等 Tkinter可以满足基本的GUI程序的要求,此次以用Tkinter为 ...
- Python学习之旅(二十一)
Python基础知识(20):错误.调试和测试 一.错误处理 在运行程序的过程中有可能会出错,一般我们会在添加一段代码在可能出错的地方,返回约定的值,就可以知道会不会出错以及出错的原因 1.使用try ...
- python学习笔记-(十一)面向对象进阶&异常处理
上篇我们已经了解了一些面向对象的基础知识,本次就了解下面向对象的一些进阶知识(虽然我也不知道有什么卵用). 静态方法 静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作.使 ...
- Python学习【第十一篇】模块(1)
模块 模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个模块里能让你的代码更好用,更易懂. 模块也是Python对象,具有随机的名字属性用来绑定或引用. 简单地说,模块就是一个保 ...
- python学习之旅:array 转 list
最近学习python,记录学习的点滴. >>> import numpy as np >>> a = np.array([[1,2],[3,4]]) >> ...
- Python学习之旅(三十八)
Python基础知识(37):访问数据库(Ⅱ) 二.MySQL MySQL是Web世界中使用最广泛的数据库服务器.SQLite的特点是轻量级.可嵌入,但不能承受高并发访问,适合桌面和移动应用.而MyS ...
随机推荐
- Docker国内镜像source
现在使用docker的镜像大多基于几种基本Linux系统.虽然我不需要在容器李安装很多东西,但经常需要一些必要的工具,而基础镜像里并不包含,比如vim, ifconfig, curl等.考虑下载速度, ...
- django-关于manage.py migrate无效的问题
django-关于manage.py migrate无效的问题 2017年03月04日 15:23:36 Jessie-via 阅读数:12317 标签: pythondjango 更多 个人分类: ...
- shell编程学习笔记(十一):Shell中的while/until循环
shell中也可以实现类似java的while循环 while循环是指满足条件时,进行循环 示例: #! /bin/sh index=10 while [ $index -gt 0 ] do inde ...
- 天府大讲堂:5G时代的物联网发展趋势与产业变革
摘要:国家973物联网首席科学家,中科院上海微系统与信息技术研究所副所长,无锡物联网产业研究院院长刘海涛教授讲授的5G时代的物联网发展趋势与产业变革意义深刻.作者根据天府大讲堂听讲内容加工整理所得,旨 ...
- PHP类中self和$this的区别
1.self代表类,$this代表对象2.能用$this的地方一定使用self,能用self的地方不一定能用$this静态的方法中不能使用$this,静态方法给类访问的. 今天在使用静态方法的时候,使 ...
- Tokyo Tyrant(TTServer)系列(一)-介绍和安装
Tokyo Cabinet 是日本人Mikio Hirabayashi 开发的一款DBM 数据库,该数据库读写很快.哈希模式写入100 万条数据仅仅需0.643 秒.读取100 万条数据仅仅需0.77 ...
- Effective Java 第三版——63. 注意字符串连接的性能
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
- mysql 动态增加列,查找表中有多少列,具体什么列。 通过JSON生成mysql表 支持子JSON
好消息, 程序员专用早餐机.和掌柜说 ideaam,可以节省20元. 点击链接 或復·制这段描述¥k3MbbVKccMU¥后到淘♂寳♀ 或者 淘宝扫码 支持下同行哈 ---------------- ...
- 那些好用的Chrome 插件
1. json-viewer 推荐理由:一款Chrome浏览器查看JSON数据自动格式化显示的浏览器插件 https://github.com/tulios/json-viewer
- Atitit 项目版本管理gitflow 与 Forking的对比与使用
Atitit 项目版本管理gitflow 与 Forking的对比与使用 1.1. 版本管理的历史 csv>>svn >git 1 1.2. gitflow的核心是分版本管理,for ...