python中函数变量作用域和类变量作用域怎么搞都错,烦躁中?
发布网友
发布时间:2022-04-29 18:28
我来回答
共3个回答
热心网友
时间:2022-04-18 06:41
python中,变量的作用域要弄清楚。只有mole、class、def、lambda才会引入作用域,其他的代码块是不会引入作用域的。
1
图一中,你在函数中声明了d为全局变量,但这样是无效的,程序运行结果,已经说明这一点。
global这个关键字,是用来“在函数中修改全局变量值”的声明,而不是“在局部函数中定义一个全局变量”的声明。这里要注意一下。
你可以再局部函数外面声明变量d,再加上你原先的函数,就可以修改、访问这个变量了。
2
在类中函数的变量,作用域只在函数中。图二中,jian这个变量分别在yu(),yu1()两个函数中,是处于不同的定义域中的,是不能相互访问的。
所以,在各自函数中,只有先定义了jian变量,才能再使用。
如果想在yu1()中访问yu()中的jian变量,就需要将jian变量变成全局变量,即在class中定义一个全局变量jian,这样yu1(),yu()函数都可以访问了
热心网友
时间:2022-04-18 07:59
Python是一种解释型语言,比较偏向脚本语言,正常时候都不用定义main函数。相对于C++,C,java这些传统的编程语言,其语法非常宽泛和随意。但是python并不是软件开发的主力,大部分时间是算法工程师的语言,算法一般不像传统程序语言那样,需要用到很复杂的类,函数的应用,大部分python程序你都很难看到像其它语言那样非常复杂的类的定义,比如继承,虚类,复杂的初始化函数,公私有函数和变量。真正学习python,我觉得是不用太纠结语法,而是关注于算法的实现。过度纠结语法,而不是关注算法,就有点走偏了。如果是关注编程语言语法,最好是学习C++之类的。
变量,作用域有的时候python的行为非常不可预知。我的经验是,定义全局变量就在程序开头定义,大部分时间不要放在类里。还有一个非常容易出错的地方就是数组类的复制,因为python没有指针,有的时候不知道是浅复制还是深复制,所以最好需要默认python的复制都是浅复制,需要深复制的直接用deepcopy函数。
一般有这两个技巧之后,python编程就很难遇到问题了。
热心网友
时间:2022-04-18 09:34
你没有定义它的类型啊,只是说全局变量