import matplotlib.pyplotにて、pyplotがインストールされます。
しかしdir()関数を使って、dir(matplotlib)にて、その中身を一覧してみると、pyplotは見当たりません。
これは、どのように解釈したら良いでしょう。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
モジュールmatplotlib
はpyplot
という名前の属性を持っていない
と解釈すればいいです。
回答に誤認が合ったので追記します。
しかしdir()関数を使って、dir(matplotlib)にて、その中身を一覧してみると、pyplotは見当たりません。
というのは正しくありません。
確かに、
plain
1>>> import matplotlib 2 3>>> from pprint import pprint 4 5>>> pprint(dir(matplotlib)) 6['LooseVersion', 7 'MatplotlibDeprecationWarning', 8 'MutableMapping', 9 'Parameter', 10 'Path', 11 'RcParams', 12 'URL_REGEX', 13 '_DATA_DOC_APPENDIX', 14 '_DATA_DOC_TITLE', 15 '_ExecInfo', 16 '__bibtex__', 17 '__builtins__', 18 '__cached__', 19 '__doc__', 20 '__file__', 21 '__loader__', 22 '__name__', 23 '__package__', 24 '__path__', 25 '__spec__', 26 '__version__', 27 '_add_data_doc', 28 '_all_deprecated', 29 '_check_versions', 30 '_color_data', 31 '_create_tmp_config_or_cache_dir', 32 '_deprecated_ignore_map', 33 '_deprecated_map', 34 '_deprecated_remain_as_none', 35 '_ensure_handler', 36 '_error_details_fmt', 37 '_get_config_or_cache_dir', 38 '_get_data_path', 39 '_get_executable_info', 40 '_get_xdg_cache_dir', 41 '_get_xdg_config_dir', 42 '_init_tests', 43 '_label_from_arg', 44 '_log', 45 '_logged_cached', 46 '_open_file_or_url', 47 '_preprocess_data', 48 '_rc_params_in_file', 49 '_replacer', 50 '_version', 51 'atexit', 52 'cbook', 53 'checkdep_dvipng', 54 'checkdep_ghostscript', 55 'checkdep_inkscape', 56 'checkdep_pdftops', 57 'checkdep_ps_distiller', 58 'checkdep_usetex', 59 'colors', 60 'compare_versions', 61 'contextlib', 62 'cycler', 63 'dedent', 64 'defaultParams', 65 'default_test_modules', 66 'fontconfig_pattern', 67 'ft2font', 68 'functools', 69 'get_backend', 70 'get_cachedir', 71 'get_configdir', 72 'get_data_path', 73 'get_home', 74 'get_label', 75 'get_py2exe_datafiles', 76 'importlib', 77 'inspect', 78 'interactive', 79 'is_interactive', 80 'is_url', 81 'locale', 82 'logging', 83 'matplotlib_fname', 84 'mplDeprecation', 85 'namedtuple', 86 'numpy', 87 'os', 88 'pprint', 89 'rc', 90 'rcParams', 91 'rcParamsDefault', 92 'rcParamsOrig', 93 'rc_context', 94 'rc_file', 95 'rc_file_defaults', 96 'rc_params', 97 'rc_params_from_file', 98 'rcdefaults', 99 'rcsetup', 100 're', 101 'sanitize_sequence', 102 'set_loglevel', 103 'shutil', 104 'subprocess', 105 'sys', 106 'tempfile', 107 'test', 108 'tk_window_focus', 109 'use', 110 'validate_backend']
とするとここにpyplot
はありません。上に書いたようにmatplotlib
はpyplot
という名前の属性を持っていないからです。
しかし、importの作用として
https://docs.python.org/ja/3/reference/import.html#submodules
サブモジュールをロードするのにどのようなメカニズム (例えば、 importlib API 、 import または import-from ステートメント、またはビルトイン関数の import) が使われた場合でも、バインディングはサブモジュールオブジェクトを親モジュールの名前空間に配置します。
(強調は私)
とあります。ということは、matplotlib.pyplot
をロードした時にmatplotlib
の属性として追加されることを意味します。
plain
1>>> from matplotlib import pyplot 2 3>>> pprint(dir(matplotlib)) 4['LooseVersion', 5 'MatplotlibDeprecationWarning', 6 'MutableMapping', 7 'Parameter', 8 'Path', 9 'RcParams', 10 'URL_REGEX', 11 '_DATA_DOC_APPENDIX', 12 '_DATA_DOC_TITLE', 13 '_ExecInfo', 14 '__bibtex__', 15 '__builtins__', 16 '__cached__', 17 '__doc__', 18 '__file__', 19 '__loader__', 20 '__name__', 21 '__package__', 22 '__path__', 23 '__spec__', 24 '__version__', 25 '_add_data_doc', 26 '_all_deprecated', 27 '_check_versions', 28 '_cm', 29 '_cm_listed', 30 '_color_data', 31 '_constrained_layout', 32 '_create_tmp_config_or_cache_dir', 33 '_deprecated_ignore_map', 34 '_deprecated_map', 35 '_deprecated_remain_as_none', 36 '_ensure_handler', 37 '_error_details_fmt', 38 '_get_config_or_cache_dir', 39 '_get_data_path', 40 '_get_executable_info', 41 '_get_xdg_cache_dir', 42 '_get_xdg_config_dir', 43 '_image', 44 '_init_tests', 45 '_label_from_arg', 46 '_layoutbox', 47 '_log', 48 '_logged_cached', 49 '_mathtext_data', 50 '_open_file_or_url', 51 '_path', 52 '_preprocess_data', 53 '_pylab_helpers', 54 '_rc_params_in_file', 55 '_replacer', 56 '_version', 57 'afm', 58 'artist', 59 'atexit', 60 'axes', 61 'axis', 62 'backend_bases', 63 'backend_tools', 64 'backends', 65 'bezier', 66 'blocking_input', 67 'category', 68 'cbook', 69 'checkdep_dvipng', 70 'checkdep_ghostscript', 71 'checkdep_inkscape', 72 'checkdep_pdftops', 73 'checkdep_ps_distiller', 74 'checkdep_usetex', 75 'cm', 76 'collections', 77 'colorbar', 78 'colors', 79 'compare_versions', 80 'container', 81 'contextlib', 82 'contour', 83 'cycler', 84 'dates', 85 'dedent', 86 'defaultParams', 87 'default_test_modules', 88 'docstring', 89 'dviread', 90 'figure', 91 'font_manager', 92 'fontconfig_pattern', 93 'ft2font', 94 'functools', 95 'get_backend', 96 'get_cachedir', 97 'get_configdir', 98 'get_data_path', 99 'get_home', 100 'get_label', 101 'get_py2exe_datafiles', 102 'gridspec', 103 'image', 104 'importlib', 105 'inspect', 106 'interactive', 107 'is_interactive', 108 'is_url', 109 'legend', 110 'legend_handler', 111 'lines', 112 'locale', 113 'logging', 114 'markers', 115 'mathtext', 116 'matplotlib_fname', 117 'mlab', 118 'mplDeprecation', 119 'namedtuple', 120 'numpy', 121 'offsetbox', 122 'os', 123 'patches', 124 'path', 125 'pprint', 126 'projections', 127 'pyplot', 128 'quiver', 129 'rc', 130 'rcParams', 131 'rcParamsDefault', 132 'rcParamsOrig', 133 'rc_context', 134 'rc_file', 135 'rc_file_defaults', 136 'rc_params', 137 'rc_params_from_file', 138 'rcdefaults', 139 'rcsetup', 140 're', 141 'sanitize_sequence', 142 'scale', 143 'set_loglevel', 144 'shutil', 145 'spines', 146 'stackplot', 147 'streamplot', 148 'style', 149 'subprocess', 150 'sys', 151 'table', 152 'tempfile', 153 'test', 154 'texmanager', 155 'text', 156 'textpath', 157 'ticker', 158 'tight_bbox', 159 'tight_layout', 160 'tk_window_focus', 161 'transforms', 162 'tri', 163 'units', 164 'use', 165 'validate_backend', 166 'widgets']
となり、確かにpyplot
がここにあります。
したがって正しい回答は
モジュールmatplotlib
はpyplot
という名前の属性を持っていない
けれども
モジュールmatplotlib.pyplot
をロードした時に、「完全修飾名matplotlib.pyplot
を持つモジュール」が、モジュールmatplotlib
にpyplot
という属性で束縛される
ということになります。
投稿2020/03/07 03:36
編集2020/03/07 04:13総合スコア11235
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/07 03:39
2020/03/07 03:52 編集
2020/03/07 03:57
2020/03/07 03:59
2020/03/07 08:13
2020/03/07 08:24
2020/03/07 08:25
2020/03/07 08:38 編集
2020/03/07 08:45
2020/03/07 09:36
2020/03/07 12:03
2020/03/07 12:31