在Python中递归函数调用举例and匿名函数lambda求1~100的和及计算阶乘举例
admin
2023-07-07 08:44:27
0

1.递归列出目录里的文件的脚本举例
列出目录中的文件可以通过下面方法:os.listdir()

In [1]: import os

In [4]: os.listdir('/root')

Out[4]:

['.tcshrc',

'.bash_history',

'.bashrc',

'ENV',

'.cache',

'.config',

'.cshrc',

'.bash_logout',

'python',

'.ssh',

'shell',

'.bash_profile',

'.ipython',

'.viminfo',

'dictionary.txt',

'1.txt']

判断是否为目录:

In [5]: os.path.isdir('/home')

Out[5]: True

判断是否为文件:

In [7]: os.path.isfile('/etc/rc.local')

Out[7]: True

拼接文件名字的绝对路径:

In [8]: os.path.join('/etc/','passwd','abc')

Out[8]: '/etc/passwd/abc'

列出目录下所有文件脚本如果下:

#!/usr/bin/env python

#FengXiaoqing

# listDir.py

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])
[root@localhost ~]# tree /tmp
/tmp
├── 123.tx
├── 123.txx
└── a
    └── b
        ├── b.txt
        └── c
            ├── c.txt
            └── d
                └── d.txt

4 directories, 5 files
[root@localhost ~]# 

[root@localhost ~]# python listDir.py /tmp
/tmp/123.tx
/tmp/123.txx
/tmp/a/b/b.txt
/tmp/a/b/c/c.txt
/tmp/a/b/c/d/d.txt
[root@localhost ~]# 

2.匿名函数lambda

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

3*5实现方法:

In [1]: def fun(x,y):

...:     return x * y

...:

In [2]: fun(3,5)

Out[2]: 15

匿名函数定义如果下:

In [3]: lambda x,y:x * y

Out[3]: >    #返回的对象

In [4]: r = lambda x,y:x * y

In [6]: r(3,5)

Out[6]: 15

匿名函数优点:

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

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

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

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

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

help(reduce)

Help on built-in function reduce in module __builtin__:

reduce(...)

reduce(function, sequence[, initial]) -> value

Apply a function of two arguments cumulatively to the items of a sequence,

from left to right, so as to reduce the sequence to a single value.

For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates

((((1+2)+3)+4)+5).  If initial is present, it is placed before the items

of the sequence in the calculation, and serves as a default when the

sequence is empty.

(END)

reduce二元计算:

In [19]: def add(x,y):

return x + y

....:

In [20]: add(1,3)

Out[20]: 4

求1到100相加的和:

#!/usr/bin/python
# -*- coding: utf-8 -*-
#date:2019.07.05
print ('1+100的总和是:%s' % reduce(lambda x,y:x+y,range(1,101)))

求阶乘:

#!/usr/bin/python
# -*- coding: utf-8 -*-
#date:2019.07.05
print ('5的阶乘是:%s' % reduce(lambda x,y:x*y,range(1,6)))

上一篇:使用BIF判断字符串

下一篇:python基础一

相关内容

热门资讯

我国科学家为细胞信号“导航”开... 新华社济南5月31日电(记者张力元)人体细胞犹如一座精密的通信城市,每天都有大量“指令”穿梭传递,调...
极端大风突袭哈尔滨!过山车停摆... 极目新闻记者 詹钘5月31日,受强对流天气影响,哈尔滨国际会展中心体育场相关设施受到损坏,原计划当晚...
三原电缆取得电缆接头连接用防护... 国家知识产权局信息显示,上海三原电缆附件有限公司取得一项名为“一种电缆接头连接用防护结构”的专利,授...
原创 识... 还是那句话,机圈苦大屏久已…… 虽然大屏有大屏的美,但是小屏也有小屏的俏。在大屏旗舰占据主流的手机市...
玄戒技术取得分频电路专利,实现... 国家知识产权局信息显示,北京玄戒技术有限公司取得一项名为“分频电路、分频器、射频芯片和电子设备”的专...
为什么今年香会基调明显变了 5月29日—31日在新加坡举行的第23届香格里拉对话会(简称“香会”),见证着元首引领下大国关系继续...
成本几毛钱、假驱蚊液香精兑水,... 入夏升温,蚊虫进入活跃期,驱蚊防护成为民生刚需,《财经调查》持续接到消费者投诉,他们买到的多款网红驱...
越来越多80后90后,正在丧失... 六一儿童节到来之际,朋友圈里开始出现一种熟悉的热闹。有人晒出零食礼包,有人半开玩笑地向伴侣讨礼物,还...
洋保电子取得用于低温环境的电气... 国家知识产权局信息显示,洋保电子(太仓)有限公司取得一项名为“一种用于低温环境的电气柜”的专利,授权...
中日韩飞手争霸宁波!2026无... 潮新闻客户端 记者 陈冲 通讯员 朱凝 5月31日,2026小遛·无人机竞速世界杯(中国·宁波鄞州站...