1. 递归列出目录里的文件

递归是函数内部调用自己,通常用来计算阶层

计算阶层有循环和递归两种方法;

普通方法:

    - 使用循环

1到n递乘:

#! /usr/bin/python

def factorial(n):

sum = 1

for i in range(1, n+1):

sum *= i

return sum

print factorial(5)

1到n递加:

#! /usr/bin/python

def factorial(n):

sum = 0

for i in range(1, n+1):

sum += i

return sum

print factorial(100)

递归调用:

n到1递乘:

def factorial(n):

   if n == 0:

        return 1

   else:

        return n * factorial(n-1)

print factorial(5)

1到n递加:

#! /usr/bin/python

def factorial(n):

if n == 0:

return 0

else:

return n + factorial(n-1)

print factorial(100)

递归的注意事项:

必须有最后的默认结果

        if n == 0

递归参数必须向默认结果收敛的:

        factorial(n-1)

os模块的几个方法:

os.listdir()

列出目录下的文件和目录,以列表形式输出

os.path.isdir()

判断是不是目录,返回bool值

os.path.isfile()

判断是不是文件,返回bool值

os.path.join()

连接路径,不会判断文件存不存在

打印目录下所有文件:

#! /usr/bin/python

import os

import sys

def print_files(path):

lsdir = os.listdir(path)

dirs = [i for i in lsdir if os.path.isdir(os.path.join(path, i))]

files = [i for i in lsdir if os.path.isfile(os.path.join(path, i))]

if dirs:

for d in dirs:

print_files(os.path.join(path,d))

if files:

for f in files:

print os.path.join(path,f)

print_files(sys.argv[1])

2. 匿名函数

   - lambda函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方。

def fun(x, y):

         return x*y

    fun(2, 3)

r = lambda x,y: x*y

    r(2, 3)

注:<function __main__.<lambda>>返回带<>号的都是对象

匿名函数优点:

    - 1.使用python写一些脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。

    - 2. 对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda不需要考虑命名的问题。

    - 3. 使用lambda在某些时候让代码更容易理解。

lambda语句中,冒号前是参数,可以有多个,逗号隔开,冒号右边是返回值。

lambda语句构建的其实是一个函数对象

reduce()函数:

reduce是内置函数

reduce后面的函数必须有两个参数,后面跟一个序列

序列中的参数执行所跟函数的return

def add(x, y):

        return x + y

    sum = reduce(add, [1, 2, 3])

reduce(lambda x,y:x+y, range(1,4))

11-30 19:20