我刚刚开始编程,我选择了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是没有的文件。
答案 0 :(得分:3)
Python doesn't support function overloading。 所以,正如@Noble Mushtak和@bsoist所注意到的那样 - 之前定义的函数将被后来定义的覆盖。
有关详细信息,请参阅this question。