Структура программы на Python
За основу взята "Глава 1. Использование функций в языке Python" книги ISBN13:978-5-93286-149-3
$ cat pysysinfo_func.py
#!/usr/bin/env python
#Здесь указывается кодировка этого скрипта, а не файла данных, который будет возможно обрабатываться.
# -*- coding: utf8 -*-
#
#System Information Gathering Script
#Сценарий сбора информации о системе
import subprocess
#Command 1
def uname_func():
    uname = "uname"
    uname_arg = "-a"
    print "Gathering system information with %s command:\n" % uname
    subprocess.call([uname, uname_arg])
#Command 2
def disk_func():
    diskspace = "df"
    diskspace_arg = "-h"
    print "Gathering diskspace information %s command:\n" % diskspace
    subprocess.call([diskspace, diskspace_arg])
#Главная функция, которая вызывает остальные функции
def main():
    uname_func()
    disk_func()
# Скрипт начинает работать с вызова главной функции main(), соответственно если функцию main()
# закомментировать вызова функций не произойдет. Когда нет никакого управления потоком или
# главной функции, весь программный код выполняется немедленно, во время импортирования модуля.
main()
Повторное использование программного кода с помощью инструкция import
Превратим выполняемый скрипт pysysinfo_func.py в модуль для повторного использования в дальнейшем и как скрипт выполняемый из командной строки и как модуль.
- В языке Python файл является модулем и наоборот.
 
Поэтому pysysinfo_func.py уже можно импортировать.
- В инструкции import нельзя указывать расширение файла .py. Импорт закончиться неудачей, если расширение будет указано.
 
Выполним импорт модуля pysysinfo_func.py. Когда импортируется файл, содержащий программный код на Python, он тут же выполняется.
In [2]: import pysysinfo_func Gathering system information with uname command: Linux ubuntuatom 2.6.28-14-generic #47-Ubuntu SMP Sat Jul 25 00:28:35 UTC 2009 i686 GNU/Linux Gathering diskspace information df command: Файловая система Разм Исп Дост Исп% смонтирована на /dev/sda1 14G 3,1G 10G 24% / tmpfs 1002M 0 1002M 0% /lib/init/rw varrun 1002M 340K 1002M 1% /var/run varlock 1002M 0 1002M 0% /var/lock udev 1002M 156K 1002M 1% /dev tmpfs 1002M 496K 1002M 1% /dev/shm lrm 1002M 2,2M 1000M 1% /lib/modules/2.6.28-14-generic/volatile /dev/sda8 122G 64G 51G 56% /home /dev/sda6 942M 18M 877M 2% /tmp /dev/sda7 9,2G 803M 8,0G 10% /var /dev/sdb1 3,8G 2,4G 1,4G 64% /media/disk
Для того, чтобы иметь возможность запускать скрипт из командной строки и одновременно при импортировании модуль выводил данные только по требованию, нужно определить когда следует вызывать главную функцию main (). Для этого изменим последнюю часть сценария:
$ cat pysysinfo_func.py
#!/usr/bin/env python
#Здесь указывается кодировка этого скрипта, а не файла данных, который будет возможно обрабатываться.
# -*- coding: utf8 -*-
#
#System Information Gathering Script
#Сценарий сбора информации о системе
import subprocess
#Command 1
def uname_func():
    uname = "uname"
    uname_arg = "-a"
    print "Gathering system information with %s command:\n" % uname
    subprocess.call([uname, uname_arg])
#Command 2
def disk_func():
    diskspace = "df"
    diskspace_arg = "-h"
    print "Gathering diskspace information %s command:\n" % diskspace
    subprocess.call([diskspace, diskspace_arg])
#Главная функция, которая вызывает остальные функции
def main():
    uname_func()
    disk_func()
if __name__ == "__main__":
    main()
Любой программный код, входящий в состав блока этой условной инструкции, будет выполняться, только когда модуль выполняется из командной строки.
Выполним импорт обновленного модуля pysysinfo_func.py. После добавления инструкции if name - никакая информация выведена не была.
In [1]: import pysysinfo_func
Используя клавишу Tab - получим все атрибуты импортированного модуля.
In [2]: pysysinfo_func. pysysinfo_func.__builtins__ pysysinfo_func.__getattribute__ pysysinfo_func.__reduce_ex__ pysysinfo_func.main pysysinfo_func.__class__ pysysinfo_func.__hash__ pysysinfo_func.__repr__ pysysinfo_func.py pysysinfo_func.__delattr__ pysysinfo_func.__init__ pysysinfo_func.__setattr__ pysysinfo_func.pyc pysysinfo_func.__dict__ pysysinfo_func.__name__ pysysinfo_func.__sizeof__ pysysinfo_func.subprocess pysysinfo_func.__doc__ pysysinfo_func.__new__ pysysinfo_func.__str__ pysysinfo_func.uname_func pysysinfo_func.__file__ pysysinfo_func.__package__ pysysinfo_func.__subclasshook__ pysysinfo_func.__format__ pysysinfo_func.__reduce__ pysysinfo_func.disk_func
Вызовем функцию pysysinfo_func.disk_func()
In [3]: pysysinfo_func.disk_func() Gathering diskspace information df command: Файловая система Разм Исп Дост Исп% смонтирована на /dev/sda1 14G 3,1G 10G 24% / tmpfs 1002M 0 1002M 0% /lib/init/rw varrun 1002M 340K 1002M 1% /var/run varlock 1002M 0 1002M 0% /var/lock udev 1002M 156K 1002M 1% /dev tmpfs 1002M 496K 1002M 1% /dev/shm lrm 1002M 2,2M 1000M 1% /lib/modules/2.6.28-14-generic/volatile /dev/sda8 122G 64G 51G 56% /home /dev/sda6 942M 18M 877M 2% /tmp /dev/sda7 9,2G 803M 8,0G 10% /var /dev/sdb1 3,8G 2,4G 1,4G 64% /media/disk
Все! Наш скрипт готов к повторному использованию и как модуль и как сценарий для запуска из командной строки.
Способы импортирования модуля
- Конструкция import pysysinfo_func импортирует все функции модуля pysysinfo_func
 - Конструкция pysysinfo_func import disk_func импортирует только функцию disk_func модуля pysysinfo_func
 
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
 - Что такое страны TIER 1,2,3
 - 7 способов сравнения файлов по содержимому в Windows или Linux
 - Установка и тестирование веб-панели HestiaCP
 - Nginx простые примеры конфигурации
 - top, htop, atop определение загрузки ОС (Load average, LA)
 - Использование rsync в примерах
 
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
 - ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
 - Подборка купонов (промокоды) на хостинг, антидетект браузеры
 - Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
 - Хостинг в России
 - Хостинг в Европе
 - Обзор браузера Dolphin {anty} для мультиаккаунтинга