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 ...
随机推荐
- solr集群构建的基本流程介绍
先从第一台solr服务器说起:1. 它首先启动一个嵌入式的Zookeeper服务器,作为集群状态信息的管理者,2. 将自己这个节点注册到/node_states/目录下3. 同时将自己注册到/live ...
- html学习笔记之2——多媒体
一:插件 插件可以通过 <object> 标签或者 <embed> 标签添加在页面中. <object width="400" height=&quo ...
- oracle无效索引重建
问题描述: 执行失败!错误信息[Exception message:无效的列索引 解决思路: 分析是表索引,大部分都是表索引失效导致的,只需要花重建表索引即可! 00.查看此表归属账户select * ...
- C#之值类型和引用类型
本文意在巩固基础知识,并不是对其进行深入剖析,还望理解.本文是对此项知识的整理文,有些内容来源于网络,其他为博主原创,所以难免会有一些小得瑕疵,敬请谅解.所有示例均是博主测试过的,如有转载请标明出处, ...
- corda
账本:corda 从每个节点的视角看待账本都是不一样的.并不是所有节点有所有账本信息的.valut视为SQL数据库,只保存 两两节点之间的数据库 状态:状态是不变的对象,代表共享的事实,比如特定时间的 ...
- ubuntu intel网卡驱动安装(华硕B250F GAMING主板 )
jikexianfeng@jikexianfeng:~$ sudo sudo lspci -knn :]: Intel Corporation Device [:591f] (rev ) Subsys ...
- 生产环境CPU过高问题定位
问题描述: 生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 解决过程: 1.根据top命令,发现 ...
- vue的js文件中获取vue实例
1.main.js导出vue实例: var vue = new Vue({ el: '#app', router, components: { App }, template: '<App/&g ...
- 在tmux会话之间共享窗口(Windows & Panes)
去年写过一篇 从Tmux 转到GNU Screen,理由是我可以 在两个显示器上通过PuTTY连接到同一个GNU Screen会话,但两个显示器可以显示不同的窗口(用GNU Screen的术语来说,是 ...
- 禅道项目管理系统整合Selenium IDE的思路
前两天说用过Selenium IDE产生了一些想法,这里做一些整理. 传统的测试人员管理测试用例,基本都是用Excel.这没什么不好的,也没什么好的.如果通过管理系统来管理用例,相对来说,少了一些简便 ...