こういうことに興味を持ってくれる人は少ないですね。
特定のモジュールで定義した関数だけを知りたいということですね。
関数はcallableですが、callableなものがすべて関数ではありません。
たとえば、intのことを型変換の関数だと誤解している人もいますが、intはクラスです。
python
1 >> > print ( callable ( int ) )
2 True
3 >> > print ( type ( int ) )
4 < class 'type' >
また、globalsから調べるだけの方法だと、そのモジュールでは定義していない関数も拾ってしまいます。
python
1 # test1.py
2
3 from glob import glob
4 my_max = max
5
6 print ( 'globals() is\n' , globals ( ) )
7 print ( 'callable(glob) is' , callable ( glob ) )
8 print ( 'callable(my_max) is' , callable ( my_max ) )
実行するとこうなります。
shell
1 $ python test01.py
2 globals ( ) is
3 { '__name__' : '__main__' , '__doc__' : None, '__package__' : None, '__loader__' : < _frozen_importlib_external.SourceFileLoader object at 0x0000021C703476D 0 > , '__spec__' : None, '__annotations__' : { } , '__builtins__' : < module 'builtins' ( built-in ) > , '__file__' : 'test01.py' , '__cached__' : None, 'glob' : < function glob at 0x0000021C7060504 0 > , 'my_max' : < built-in function max > }
4 callable ( glob ) is True
5 callable ( my_max ) is True
自作のモジュールについて調べたいときは以下のようにやってください。
python
1 import my_module
2 import glob
3 import sys
4
5 print ( [ k for k , v in vars ( my_module ) . items ( ) if type ( v ) == type ( glob . glob ) and v . __module__ == my_module . __name__ ] )
現在のファイル中であればmy_module.__name__を'main 'にしてください。
上記でglob.globを使っているのはfunctionインスタンスの代表としての意味です。
以上で大雑把なところはわかりますが、組み込みモジュールやパッケージの場合には他のことも考える必要があります。
また、メソッド、関数内で定義した関数、generatorなどは関数とは見なしていません。