Python函数混淆

Python函数混淆,python,Python,我正在学习Python。我有一个函数读写(文件名,列表)。文件名的类型为字符串。列表是包含要写入文件的字符串的列表 我有这样一个简单的函数调用: fname = 'hello.txt' readwrite('xx'+fname, datalist) 我面临的问题是,当我在函数定义中打印文件名参数值时,我得到的是hello.txt而不是xxHello.txt-这是一件奇怪的事情,我没有预料到当我从commadline执行相同操作时,对于一个示例函数,它工作得很好。 我想知道我错过了什么 代码如下


我正在学习Python。我有一个函数读写(文件名,列表)。文件名的类型为字符串。列表是包含要写入文件的字符串的列表

我有这样一个简单的函数调用:

fname = 'hello.txt'
readwrite('xx'+fname, datalist)
我面临的问题是,当我在函数定义中打印文件名参数值时,我得到的是hello.txt而不是xxHello.txt-这是一件奇怪的事情,我没有预料到
当我从commadline执行相同操作时,对于一个示例函数,它工作得很好。 我想知道我错过了什么

代码如下:

def readwrite(fileName, list):
    print 'arg file=',filename
    curdir = os.getcwd();
    fullpath = os.path.join(curdir, filename);
    print('full path calculated as: '+fullpath);
    fileExist = os.path.exists(fullpath);
    if(fileExist):
        print 'file exists and opening in \'arw\'mode'
        fiel = open(fileName, 'arw')    # valid only if exists
    else:
        print "file doesnt exist; opening in \'w\'mode"
        fiel = open(fileName, 'w')      # if it doesnt exist, we cant open it for reading as nothing to read.

    for line in list:
        fiel.write('\n'+line)

    print 'position of new pointer = ', fiel.tell() 
--调用函数的主代码:

filename = 'put.txt'
strList = ['hello', 'how', 'are', 'you']
readwrite(('xx'+filename), strList);
--fn def打印“arg file=”的第二行,filename打印hello.txt,而不是xxHello.txt

这是我的困惑,因为它为什么表现得很糟糕,或者我做错了什么。

Python区分大小写。下面两行是指两个不同的变量(注意第一行中的大写字母“N”):


发生的情况是,第二行选择名为
filename
的全局变量,而不是名为
filename

的函数参数,不要将
list
用作变量名。通过这样做,您将覆盖对内置类
list
@aix已经回答了大小写敏感的问题,我想补充的是,“list”是一个内置函数,使用它作为参数或变量的名称通常不是一个好主意。感谢您的反馈big gyz+1非常感谢。我不能做+1,因为我没有因为我的错误而感到愚蠢。@abhinav:但是你可以通过点击左边的复选标记来接受答案。即时+2次重复也适用于您。而且,这不是一个愚蠢的错误,你写了一个非常好的问题。太糟糕了,我不能再投票了。这里没有多少新来者知道如何写一个好问题。所以别担心,你很快就会有足够的声誉。欢迎来到社区!另外,顺便说一句,在Python中,所有行末尾的分号都是不必要的,标准的做法是不使用它们。它们很丑:)
fiel
看起来也很笨拙;典型的名称是
f
a_文件
。此外,您不必转义字符串中的引号。您可以将整个字符串用双引号括起来,例如,
print“文件存在并以“arw”模式打开”
def readwrite(fileName, list):
    print 'arg file=',filename