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学习之旅(十一)的更多相关文章

  1. 180分钟的python学习之旅

    最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时 ...

  2. Python学习笔记(十一)

    Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...

  3. python学习之旅

    python学习分类 python基础    +- day01——python初始.变量.常量.注释.基础数据类型.输入.if day02——while.字符串格式化.运算符.编码初识 day03—— ...

  4. Python学习之旅(三十一)

    Python基础知识(30):图形界面(Ⅰ) Python支持多种图形界面的第三方库:Tk.wxWidgets.Qt.GTK等等 Tkinter可以满足基本的GUI程序的要求,此次以用Tkinter为 ...

  5. Python学习之旅(二十一)

    Python基础知识(20):错误.调试和测试 一.错误处理 在运行程序的过程中有可能会出错,一般我们会在添加一段代码在可能出错的地方,返回约定的值,就可以知道会不会出错以及出错的原因 1.使用try ...

  6. python学习笔记-(十一)面向对象进阶&异常处理

    上篇我们已经了解了一些面向对象的基础知识,本次就了解下面向对象的一些进阶知识(虽然我也不知道有什么卵用). 静态方法 静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作.使 ...

  7. Python学习【第十一篇】模块(1)

    模块 模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个模块里能让你的代码更好用,更易懂. 模块也是Python对象,具有随机的名字属性用来绑定或引用. 简单地说,模块就是一个保 ...

  8. python学习之旅:array 转 list

    最近学习python,记录学习的点滴. >>> import numpy as np >>> a = np.array([[1,2],[3,4]]) >> ...

  9. Python学习之旅(三十八)

    Python基础知识(37):访问数据库(Ⅱ) 二.MySQL MySQL是Web世界中使用最广泛的数据库服务器.SQLite的特点是轻量级.可嵌入,但不能承受高并发访问,适合桌面和移动应用.而MyS ...

随机推荐

  1. PornHub 正式发布 AI自动标注色情演员引擎

    http://igeekbar.com/igeekbar/post/501.htm Pornhub已经宣布推出一款全新的成人片识别引擎,这款引擎由AI驱动,使用计算机视觉技术自主检测和识别成人片内容以 ...

  2. VS2017环境下安装AO10.2的方法

    软件版本 Visual Studio的全称.简称及版本号对应关系为: Microsoft Visual Studio 2002 VS2002 VC7.0 Microsoft Visual Studio ...

  3. JavaWeb开发的一些问题

    从今天开始,在此帖陆续会记录一些平时所遇到的一些问题 1.20181229 org.apache.ibatis.binding.BindingException: Invalid bound stat ...

  4. shell中打印带有时间的日志的命令(转)

    echo "`date "+%Y-%m-%d %H:%M:%S"` | [logadm -on@`date "+%Y%m%d%H%M%S"`] &qu ...

  5. Win10一直弹出 用户账户控制 解决

    目录 问题 解决方法一 将appwiz.cpl加入UAC白名单 解决方法二 问题 自从更新了Windows后,就出现了一个问题,隔一段时间就弹出一次下面的对话框,而且如果时间稍长,会弹出多个. 解决方 ...

  6. 关于Docker目录挂载的总结(转)

    关于Docker目录挂载的总结 Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定. 譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过 ...

  7. bootstrap table 的简单Demo

    暂时够用,不够用再补充 T_T script: <link rel="stylesheet" href="lib/bootstrap.min.css"&g ...

  8. appium 报错

    2018-11-27 18:05:56:313 - [Logcat] Logcat terminated with code 0, signal null 2018-11-27 18:05:56:31 ...

  9. python3 + flask + sqlalchemy +orm(1):链接mysql 数据库

    1.pycharm中新建一个flask项目 2.按装flask.PyMySQL.flask-sqlalchemy 3.项目下面新建一个config.py 文件 DEBUG = True #dialec ...

  10. [转]java List和数组相互转换方法

    原文地址:https://blog.csdn.net/zjx2016/article/details/78273192 前言在java项目中数组和list集合(这里指ArrayList)经常需要互相转 ...