python 获取特定名称某些函数

Python
# -*- coding: utf-8 -*- """ @Time: 2018/1/8 @Author: songhao @微信公众号: zeropython @File: c3.py """ def caiji_o(): print("caiji_o") def caiji_pp(): print("caiji_pp") def caiji_oo(): print("caiji_oo") def caiji_ll(): print("caiji_ll") if __name__ == '__main__': get_func = [globals()[name] for name in globals() if name.startswith('caiji')] for x in get_func: x() output #/Users/songhao/.virtualenvs/get/bin/<span class="wp_keywordlink"><a href="http://www.168seo.cn/python" title="python">python</a></span> /Users/songhao/py/get/c3.py #caiji_o #caiji_pp #caiji_oo #caiji_ll
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# -*- coding: utf-8 -*-
"""
@Time: 2018/1/8
@Author: songhao
@微信公众号: zeropython
@File: c3.py
"""
 
 
def caiji_o ( ) :
     print ( "caiji_o" )
 
 
def caiji_pp ( ) :
     print ( "caiji_pp" )
 
 
def caiji_oo ( ) :
     print ( "caiji_oo" )
 
 
def caiji_ll ( ) :
     print ( "caiji_ll" )
 
 
if __name__ == '__main__' :
     get_func = [ globals ( ) [ name ] for name in globals ( ) if name . startswith ( 'caiji' ) ]
     for x in get_func :
         x ( )
output
#/Users/songhao/.virtualenvs/get/bin/python /Users/songhao/py/get/c3.py
#caiji_o
#caiji_pp
#caiji_oo
#caiji_ll

如果从另外一个文件调用呢?

Python
# -*- coding: utf-8 -*- """ @Time : 2018/1/8 下午4:50 @Author : Songhao @微信公众号 : zeropython @File : c2.py """ import types import c3 # from c3 import * print(dir(c3)) fl = [x for x in dir(c3) if x.startswith('caiji')] # print(c3.__dict__) print([c3.__dict__.get(a) for a in dir(c3) if a.startswith('caiji')]) for x in [c3.__dict__.get(a) for a in dir(c3) if a.startswith('caiji')]: x() # 也可以用这种方法 get_func = [globals()[name] for name in globals() if name.startswith('caiji')] print(get_func) for x in get_func: x()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# -*- coding: utf-8 -*-
"""
@Time    : 2018/1/8 下午4:50
@Author  : Songhao
@微信公众号    : zeropython
@File    : c2.py
"""
 
import types
import c3
# from c3 import *
 
print ( dir ( c3 ) )
 
fl = [ x for x in dir ( c3 ) if x . startswith ( 'caiji' ) ]
 
# print(c3.__dict__)
print ( [ c3 . __dict__ . get ( a ) for a in dir ( c3 ) if a . startswith ( 'caiji' ) ] )
for x in [ c3 . __dict__ . get ( a ) for a in dir ( c3 ) if a . startswith ( 'caiji' ) ] :
     x ( )
 
# 也可以用这种方法
get_func = [ globals ( ) [ name ] for name in globals ( ) if name . startswith ( 'caiji' ) ]
print ( get_func )
for x in get_func :
     x ( )

另外可以通过装饰器,用到什么函数直接用装饰器装饰一下

Python
fs = [] def get_f(func): fs.append(func) return func @get_f def one(): print("one") @get_f def two(): print("two") for x in fs: x()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fs = [ ]
def get_f ( func ) :
     fs . append ( func )
     return func
 
@ get_f
def one ( ) :
     print ( "one" )
 
@ get_f
def two ( ) :
     print ( "two" )
 
for x in fs :
     x ( )



  • zeropython 微信公众号 5868037 QQ号 5868037@qq.com QQ邮箱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值