Согласившись с большинством ранее полученных ответов, use ..., only: ...
- это путь, используйте типы, когда это имеет смысл, максимально примените мышление питона . Еще одно предложение - использовать соответствующие соглашения об именах в импортированном модуле вместе с private
/ public
операторами.
Например, библиотека netcdf
использует nf90_<some name>
, что ограничивает загрязнение пространства имен на стороне импортера.
use netcdf ! imported names are prefixed with "nf90_"
nf90_open(...)
nf90_create(...)
nf90_get_var(...)
nf90_close(...)
аналогично, оболочка ncio для этой библиотеки использует nc_<some name>
(nc_read
, nc_write
...).
Важно отметить, что в таких проектах, где use: ..., only: ...
сделан менее актуальным, вам лучше контролировать пространство имен импортируемого модуля, задав соответствующие атрибуты private
/ public
в заголовке, чтобы быстро взглянуть на него будет достаточно для читателей, чтобы оценить, с каким уровнем «загрязнения» они сталкиваются. По сути, это то же самое, что и use ..., only: ...
, но на стороне импортированного модуля - поэтому записывается только один раз, а не при каждом импорте).
Еще одна вещь: что касается объектной ориентации и python, на мой взгляд, различие заключается в том, что Фортран на самом деле не поощряет процедуры с привязкой к типу, отчасти потому, что это относительно новый стандарт (например, не совместимый с количество инструментов, и менее рационально, это просто необычно), и потому что это нарушает удобное поведение, такое как безпроцессное копирование производного типа (type(mytype) :: t1, t2
и t2 = t1
). Это означает, что вам часто приходится импортировать тип и все возможные процедуры с привязкой к типу, а не просто класс. Уже одно это делает код на Fortran более многословным по сравнению с Python, и практические решения, такие как соглашение о присвоении имен префиксам, могут оказаться полезными.
ИМО, суть в том, что выбирайте свой стиль кодирования для людей, которые будут его читать (включая ваше позднее «я»), как учит Python. Лучшим является более подробное use ..., only: ...
при каждом импорте, но в некоторых случаях это будет делать простое соглашение об именах (если вы достаточно дисциплинированы ...).