理解Python函数的基本帮助

时间:2016-12-03 03:00:43

标签: python function

我正在尝试理解函数是如何工作的并且有一个基本问题。我试图弄清楚如何将变量设置到函数中并且不知道如何。我可能更容易展示我的代码:

我有一些解压缩文件的代码

fh = open(fn, 'rb')
z = zipfile.ZipFile(fh)
for name in z.namelist():
    z.extract(name, outpath)
fh.close()

我可以将它定义为函数:

def extract_zip():
    fh = open(fn, 'rb')
    z = zipfile.ZipFile(fh)
    for name in z.namelist():
        z.extract(name, outpath)
    fh.close()

然后我可以通过输入:

来调用它
extract_zip()

但是把它放到一个函数中的目的是让我可以一遍又一遍地使用它。但是当我第二次或第三次使用它时,变量名称将不是'fn',而是稍后定义的另一个变量名。

我如何编写此函数,但将'fn'定义为变量,然后通过键入

调用它
extract_zip(2nd_filename)

由于

4 个答案:

答案 0 :(得分:2)

这就像将fn作为函数的参数

一样简单
def extract_zip(fn):
    fh = open(fn, 'rb')
    z = zipfile.ZipFile(fh)
    for name in z.namelist():
        z.extract(name, outpath)
    fh.close()

有时,您可能还想使用默认名称

def extract_zip(fn="default_name.extension"):
    #...

此外,请注意您的文件名可以是完整的文件名,这意味着它可以包含您要读取的文件的路径。例如,如果您的项目布局是

your_working_direcory/
    your_script.py
    folder1/
        folder2/
            file_to_read.extension

您必须定义要读取的文件的全名

yourFullFileName = os.path.join(
                       os.path.dirname(__file__),# __file__ is the full name of your working script, 
                      'folder1', 
                      'folder2', 
                      'file_to_read.extension'
                   )

确保脚本的可移植性(您不必担心主要依赖于操作系统的分隔符)。然后你会像这样使用你的功能

extract_zip(fn=yourFullFileName)

答案 1 :(得分:0)

def extract_zip(name_of_file):
    fh = open(name_of_file, 'rb')
    z = zipfile.ZipFile(fh)
    for name in z.namelist():
        z.extract(name, outpath)
    fh.close()

以上允许您将文件名设置为name_of_file='my filename'

答案 2 :(得分:0)

为了能够重用函数,你必须为函数创建变量元素参数,例如:

def extract_zip(filename, outpath):
    with zipfile.ZipFile(filename) as z:
        z.extractall(outpath)
        return z.namelist()

return返回所有归档对象的名称,以便您可以跟踪提取的项目。

files = {}
files[(filename, outpath)] = extract_zip('my.zip', 'output')

答案 3 :(得分:0)

改变变量的一种方法是添加一个 input() 函数(raw.input() 对于旧的 Python 版本)

var = input(What Is THe Filename? (Make It Exact!): )

var 是任何你的变量。