# -*- 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
|
如果从另外一个文件调用呢?
# -*- 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
(
)
|
另外可以通过装饰器,用到什么函数直接用装饰器装饰一下
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
(
)
|
783

被折叠的 条评论
为什么被折叠?



