python在if语句中调用和修改全局变量的问题

2020-11-27 22:34:00 字数 3909 阅读 8798

1楼:

从cmd开始的地方全部缩进试试

2楼:匿名用户

这里不需要把变量设置成global的,另外打印这么多行是因为你每读取一行就会写一行,而你的if语句并不是每一行都能满足。

python命名空间和全局变量问题,怎么解决

3楼:匿名用户

当一行**要使用变量 x 的值时,python 会到所有可用的名字空间去查找变量,按照如下顺序:

1、局部命名空间:特指当前函数或类的方法。如果函数定义了一个局部变量 x,或一个参数 x,python 将使用它,然后停止搜索。

2、全局命名空间:特指当前的模块。如果模块定义了一个名为 x 的变量,函数或类,python 将使用它然后停止搜索。

3、内置命名空间:对每个模块都是全局的。作为最后的尝试,python 将假设 x 是内置函数或变量。

4、如果 python 在这些名字空间找不到 x,它将放弃查找并引发一个 nameerror 异常,如,nameerror: name 'aa' is not defined。

嵌套函数的情况:

1、先在当前 (嵌套的或 lambda) 函数的命名空间中搜索

2、然后是在父函数的命名空间中搜索

3、接着是模块命名空间中搜索

4、最后在内置命名空间中搜索

python中多线程调用全局变量,值不是修改后的值

4楼:莫安綺

多线程读取全局变量需要引用线程锁,否则多个线程同时读取同一个全局变量会出现和预期不一样的值

python一个模块怎样修改另一个模块定义的全局变量值?

5楼:du瓶邪

(1)import 模块

模块.变量名

(2)from 模块 import 变量名,这样可以直接使用不过不太应用后面的那种,可能会出现重名的变量,无法分辨.

6楼:匿名用户

调用b中get_a():

global a

a=2return a

python局部变量和全局变量问题

7楼:大话残剑

global语句声明后,指定的变量被认为是函数外的。后面的所有操作都是在操作函数外的那个变量,虽然你是在函数内操作的。

虽然python提供了这个功能,但是应该尽量避免这样做,因为这使得程序的读者会不清楚这个变量是在**定义的。

deffunc():

globalx

print'xis',x

x=2

print'changedlocalxto',xx=50

func()

print'valueofxis',x执行结果是这样的

x is 50

changed global x to 2value of x is 2

python中使用线程,使用全局变量的值控制线程中if语句执行是if还是else.可

8楼:匿名用户

应该没问题把,如果你不再线程中改这个值的话。

把你的案例**贴出来看看

python class里面的全局变量问题

9楼:匿名用户

你在ex里面定义的oo,所以你得先执行过ex之后才能执行start。

classtest:

def__init__(self,name='testa'):

self.x='age'

self.name=name

self.ex()#加上这个

self.start()

defex(self):

globaloo

oo='thisistest'

defstart(self):

printoo

t=test()

如果不适用全局变量的话,你可以self.oo:

classtest:

def__init__(self,name='testa'):

self.x='age'

self.name=name

self.ex()

self.start()

defex(self):

self.oo='thisistest'

defstart(self):

printself.oo

t=test()

10楼:匿名用户

因为你定义oo是在self.ex(self)这个函数里,所以在这个函数被执行前,global里并没有 oo这个变量。

如果你明白这个道理就知道了怎么去打印你的oo了。

简单的说这样

t=test()

t.ex()

t.start()

11楼:匿名用户

classtest:

def__init__(self,name='testa'):

self.x='age'

self.name=name

self.oo="thisistest"

self.start()

defex(self):

oo='thisistest'

defstart(self):

printoo

test()

python的class里全局变量有时不能被调用

12楼:育知同创教育

你在ex里面定义的oo,所以你得先执行过ex之后才能执行start。

class test: def __init__(self,name='testa'): self.

x = 'age' self.name = name self.ex() #加上这个 self.

start() def ex(self): global oo oo = 'this is test' def start(self): print oo t=test()

如果不适用全局变量的话,你可以self.oo:

class test: def __init__(self,name='testa'): self.

x = 'age' self.name = name self.ex() self.

start() def ex(self): self.oo = 'this is test' def start(self):

print self.oo t=test()

python 中全局变量问题

13楼:常山英豪

看你的**,我猜测你这个是一个暴力破解密码的**片段吧。

page没有赋值就直接使用,当然不行。把**修改为这样defdo_login(uid,passwd):

...#你的**不变

returnpage

page=""

i=0

whilepage.find(‘you’)>-1:

print'success'

else:

uid=201270201049

passwd=10000+i

page=do_login(uid,passwd)i=i+1

14楼:匿名用户

do_login1=

^这是什么……