您的位置:首页 > 编程语言 > Python开发

路飞学诚-python集训-第一章

2018-06-23 22:48 393 查看
版权声明: https://blog.csdn.net/tengjiageng1523/article/details/80778145
  • 在函数中修改全局变量

在函数中修改全局变量需要用到 global 关键字
t = '测试'
def test():
t = '测试1'
print(t,id(t))

test()
print(t,id(t))

可以从结果中看出函数中的t = ‘’测试1‘’并没有对全局变量t进行修改,那么怎样才能在函数中修改全局变量呢?

这里我们就需要用到global关键字来声明全局变量

t = '测试'
def test():
global t
t = '测试1'
print(t,id(t))
test()
print(t,id(t))

从测试结果上看,函数运行之后,函数内部的t的内存地址与全局变量t的内存地址相同,说明函数中t不再是局部变量,而是对全局变量的修改。

来,让我们把掌声送给global。


  • 在函数中修改列表

    由于一些不知名的失误,原来写的没保存上,幸好我有截图!!!





  • 嵌套函数

    什么是嵌套函数,就好比俄罗斯套娃。一个娃娃里面还套着另一个娃娃。嵌套函数就是一个函数里面还有另一个函数。

[code]def func1():
print(123)
def func2():
print(234)

func1()这就是一个简单的嵌套函数。

现在问题来了,这段代码的运行结果是什么呢???我们来执行一下。

看到结果,你会不会有一丝丝差异与迷茫?

为什么只执行了func1??

那是因为函数在定义之后。如果没有被调用,那么函数的内部代码永远不会被执行。

那怎样才能显示234呢?我们只需要调用func即可。

def func1():
print(123)
def func2():
print(234)
    func2()
func1()
运行结果:

让我么来看接下来的这段代码。

age=18
def func1():
age = 73
print(age)
def func2():
age=84
print(age)
func2()
func1()
让我们来猜测下结果,很简单就是73,84.不再赘述。标准的按顺序执行。那么请看下面的这段代码:
age=18
def func1():
age = 73
print(age)
def func2():
print(age)
func2()
func1()
这段代码的执行结果是什么呢?让我们一起来分析一下

首先第一个print输出73没什么问题,但在执行函数func2时,函数func2中并没有age变量,这时,就会向上一层寻找age变量。理论上分析,输出的应该也是func1中的73,让我们来验证一下。

事实证明,我们的分析是正确的,来继续下一段代码:

age=18
def func1():
def func2():
print(age)
age=73
func2()
func1()
老规矩,继续分析。当代码执行func2之前,已经神明了age=73,所以func2中找到的应该是func1中的局部变量。

我们来验证一下:

事实证明,我们是对的!来请看下面这段代码:

age=18
def func1():
def func2():
print(age)
func2()
age = 73
func1()
这次我们把age = 73放到了func2的下面;来继续分析结果:

直到func2被调用,func1中都没有声明变量age,理论上讲,这个时候执行func2,由于func1中没有被声明的变量age,那么是不是就要再往上一层查找,找到全局变量age呢???我们来验证一下。



omgd!报错了,为什么报错。可能是python有选择困难症。虽然执行func2时age=73 还没有被声明,但是他也是存在的,python就不知道应该找这个func1中的未声明的局部变量,还是声明了的全局变量。




今天就先到这里,我们明天见



阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: