Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python Functions Confusion

Tags:

python


I am learning Python. I have a function readwrite(filename, list). filename is of type string. list is a list containing strings to be wtitten in the file.

I have a simple function call like this:

fname = 'hello.txt'
readwrite('xx'+fname, datalist)

I am facing problem that when i print the filename argument value inside the function definition, i get hello.txt rather than xxHello.txt - a strange thing which i didnt expect
when i do same from commadline, for a sample function, it works fine. I wonder what I am missing over there.

Here s the code:

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() 

-- main code calling the function:

filename = 'put.txt'
strList = ['hello', 'how', 'are', 'you']
readwrite(('xx'+filename), strList);

-- second line in fn def print 'arg file=',filename prints hello.txt rather than xxHello.txt
This is my confusion as why is it behaving starngely or am i doing smthing wrong.

like image 232
Abhinav Avatar asked Oct 10 '11 10:10

Abhinav


People also ask

What are the 3 functions in Python?

There are three functions in python that provide vast practicality and usefulness when programming. These three functions, which provide a functional programming style within the object-oriented python language, are the map(), filter(), and reduce() functions.

What is a Argumentin Python?

The terms parameter and argument can be used for the same thing: information that are passed into a function. From a function's perspective: A parameter is the variable listed inside the parentheses in the function definition. An argument is the value that are sent to the function when it is called.


1 Answers

Python is case-sensitive. The two lines below are referring to two different variables (note the capital "N" in the first one):

def readwrite(fileName, list):
    print 'arg file=',filename

What's happening is that the second line picks up the global variable called filename instead of the function argument called fileName.

like image 78
NPE Avatar answered Oct 04 '22 05:10

NPE