编写简单程序难以编写局部变量和全局声明

时间:2014-07-16 18:55:12

标签: python

我刚刚开始编程,我选择了python作为我的第一语言。我正在阅读有关局部变量和函数中的全局语句的内容,我决定编写一个简单的程序来进行实践。该程序的目标是从x = 50开始,然后使用一个名为x的参数创建一个函数,将local x更改为2然后编写另一个函数,而不将参数更改为全局x到3.所以当我这样做并调用功能分开,像这样

x = 50

def func(x):
    print 'x is', x
    x = 2
    print 'Changed local x to', x

func(x)
print 'x is still', x


def func():
    global x

    print 'x is', x
    x = 3
    print 'Changed global x to', x

func()
print 'Value of x is', x
一切顺利。但是当我一个接一个地打电话时,就像这样

x=50


def func(x):
    print 'x is', x
    x = 2
    print 'Changed local x to', x



def func():
    global x

    print 'x is', x
    x = 3
    print 'Changed global x to', x

func(x)
print 'x is still', x

func()
print "Value of x is", x

它没有用。这是终端

pedro@pedro-Inspiron-3521:~$ cd /home/pedro/Desktop/python
pedro@pedro-Inspiron-3521:~/Desktop/python$ python testperfect.py
x is 50
Changed local x to 2
x is still 50
x is 50
Changed global x to 3
Value of x is 3
pedro@pedro-Inspiron-3521:~/Desktop/python$ python test2.py
Traceback (most recent call last):
  File "test2.py", line 18, in <module>
    func(x)
TypeError: func() takes no arguments (1 given)
pedro@pedro-Inspiron-3521:~/Desktop/python$

。我做错了什么?我使用ubuntu作为操作系统,gedit作为文本编辑器和预安装在ubuntu中的终端。 Testperct.py是有效的文件,test2.py是没有的文件。

1 个答案:

答案 0 :(得分:3)

Python doesn't support function overloading。 所以,正如@Noble Mushtak和@bsoist所注意到的那样 - 之前定义的函数将被后来定义的覆盖。

有关详细信息,请参阅this question