- Python Основы
- Hello World!
- Запуск скрипта
- Отступы (indentation)
- Демонстрация
- Арифметика
- Печать спецсимволов HTML
- Ссылки
- Синтаксис
- if __name__ == ‘__main__’
- Пакеты Python в Linux
- Shebang
- Scopes
- Python Main Function & Method Example: Understand def Main()
- def main() Example 1
- def main() Example 2
- The __name__ variable and Python Module
Python Основы
Python, произностися как Пайтон, в русском языке распространено название Питон — высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода.
Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.
Python поддерживает структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное программирование.
Основные архитектурные черты — динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений, высокоуровневые структуры данных.
Поддерживается разбиение программ на модули, которые, в свою очередь, могут объединяться в пакеты.
Эталонной реализацией Python является интерпретатор CPython, поддерживающий большинство активно используемых платформ.
Он распространяется под свободной лицензией Python Software Foundation License, позволяющей использовать его без ограничений в любых приложениях, включая проприетарные.
Есть реализация интерпретатора для JVM с возможностью компиляции, CLR, LLVM, другие независимые реализации. Проект PyPy использует JIT-компиляцию, которая значительно увеличивает скорость выполнения Python-программ.
Python — активно развивающийся язык программирования, новые версии с добавлением/изменением языковых свойств выходят примерно раз в два с половиной года.
Язык не подвергался официальной стандартизации, роль стандарта де-факто выполняет CPython, разрабатываемый под контролем автора языка.
В настоящий момент (апрель 2021) Python занимает третье место в рейтинге TIOBE с показателем 11,03%.
Аналитики отмечают, что это самый высокий балл Python за все время его присутствия в рейтинге.
Посмотреть текущий рейтинг можно здесь
Hello World!
Инструкция по запуску первой программы в Python
Убедитесь, что Python установлен и команда
Показывает версию Python, например
Если вы работаете в Linux, UNIX или Bash в Windows перейдите в свою домашнюю директорию
Создайте директорию python
Перейдите в неё, создайте файл hello_world.py и откройте его любым тестовым редактором
cd python
touch hello_world.py
vi hello_world.py
Вставьте туда следующий код
В терминале должно появиться сообщение
Больше деталей о запуске скриптов вы можете найти в следующем параграфе — «Запуск Python скрипта» и затем в if __name__ == «__main__»:
Запуск скрипта
Чтобы запустить .py скрипт введите
Результат такого запуска зависит от того, что указано после if __name__ == «__main__»: если это условие вообще есть
Теперь то же самое но в функции
def say_hello (): print ( «Hello!» )
Ничего не произошло потому что функцию никто не вызвал
Можно добавить вызов функции следующим образом
def say_hello (): print ( «Hello!» ) say_hello()
В этом случае функция будет вызываться всегда — как при запуске скрипта из терминала так и при импорте в другой модуль настроить это поведение можно с помощью переменной __name__ а точнее — с помощью условия if __name__ == «__main__»:
Отступы (indentation)
Python не является языком поддерживающим свободный формат. Блоки кода не разделяются с помощью { }
Вместо этого блоки разделяются отступами по так называемому правилу оффсайда (Off-side rule)
Демонстрация
Рассмотрим файл for_loop.py
Всё работает прекрасно. Обратите внимание, что выведены были только i от 1 до 3. 4 python не вывел.
Если написать код не в одну строку, а следующим образом
то работать код не будет. Получится ошибка
File «/home/andrei/python/for_loop.py», line 2 print(i) ^ IndentationError: expected an indented block
Поэтому нужно поставить перед print пробел
Вместо одного пробела можно поставить табуляцию, но лучше поставить два или четыре пробела подряд.
PEP8 — документ, в котором собраны рекомендации по написанию Python кода говорит:
Use 4 spaces per indentation level
САМОЕ ВАЖНОЕ: Нельзя смешивать в одном файле отступы в виде табуляций и в виде пробелов. Выберите один стиль и придерживайтесь его.
Про то как правильно переносить слишком длинные строки можете прочитать здесь
Арифметика
/ — деление. Результат — число с плавающей точкой
// — целочисленное деление. Результат — округлённое до целого числа частное.
% — остаток от деления. Результат — остаток от //
Печать спецсимволов HTML
for i in range(100001,125000): print «
«
Ссылки
Синтаксис
Set в фигурных скобках. Элемент добавляется с помощью .add()
if __name__ == ‘__main__’
Чтобы разобраться в смысле этой строки создадим два файла. first_module.py и second_module.py
print ( f»Имя первого модуля: » ) # Если не любите f-string напишите: print ( «Имя первого модуля: <>» .format(__name__))
Имя первого модуля: __main__
Имя первого модуля: __first_module__
Вывод: когда модуль запущен непосредственно, его __name__ это __main__
Когда модуль импортирован в другой модуль, его __name__ это __название_py_файла__
Теперь когда все ясно, можно добавить в наш код условие if __name__ == «__main__»
def say_hello (): print ( «Hello!» ) def display_name (): print (f «Имя первого модуля: » ) if __name__ == «__main__» : say_hello()
def say_hello (): print ( «Hello!» ) def display_name (): print (f «Имя первого модуля: » ) if __name__ == «__main__» : display_name()
Имя первого модуля: __main__
Суть в том, что теперь мы определяем что будет выполняться при вызове этого скрипта а что нет.
Пакеты Python в Linux
Узнать сколько всего python3 пакетов в репозитории Ubuntu
apt-cache search python3 | wc -l
Изучить их названия можно с помощью less
apt-cache search python3 | less
alembic — lightweight database migration tool for SQLAlchemy
brltty — Access software for a blind person using a braille display
debian-goodies — Small toolbox-style utilities for Debian systems
devscripts — scripts to make the life of a Debian Package maintainer easier
libcrack2-dev — pro-active password checker library — development files
…
Проверить, существует ли файл hosts
#!/usr/bin/python3 import os.path if os.path.exists(«/etc/hosts»): print(«hosts file exists») else: print(«no hosts file»)
#!/usr/bin/python3 try: f = open(‘/etc/hosts’) print(«hosts file exists») except FileNotFoundError: print(«no hosts file»)
Shebang
Указывает на нужный интерпретатор. Примеры:
После написаний шебанга нужно сделать скрипт выполняемым файлом
И теперь его можно запускать прямо из терминала
В Windows запускать Python скрипты помогает Pylauncher (см. PEP 397 )
Scopes
Enclosing — внутри фукнции, которая вызвала функцию
Built-in — встроено в Python
Ссылки на Local уничтожаются после выполнения функции
Рассмотрим функцию fetch_words() из статьи про docstring
url, story, story_words, line, line_words, word — это локальные переменные
def fetch_words ( url ): «»»Fetch a list of words from a URL. Args: url: The URL of a UTF-8 text document. Returns: A list of strings containing the words from the document «»» # PEP 257 # story = urlopen(«http://sixty-north.com/c/t.txt») story = urlopen(url) story_words = [] for line in story: line_words = line.decode( «utf8» ).split() for word in line_words: story_words.append(word) story.close() return story_words def print_items (story_words): «»»Print items one per line. Args: An iterable series of printable items. «»» for word in story_words: print (word) def main (url): words = fetch_words(url) print_items(words) if __name__ == «__main__» : main(sys.argv[ 1 ])
Разберем поведение глобальных переменных
count = 0 def show_count (): print (count) def set_count (c): count = c show_count() # 0 set_count( 5 ) show_count() # 0
Изменить поведение функции можно с помощью global
count = 0 def show_count (): print (count) def set_count (c): global count count = c show_count() # 0 set_count( 5 ) # Now affects global variable show_count() # 5
Python Main Function & Method Example: Understand def Main()
Python main function is a starting point of any program. When the program is run, the python interpreter runs the code sequentially. Main function is executed only when it is run as a Python program. It will not run the main function if it imported as a module.
What is the def main() function in Python? To understand this, consider the following example code
def main() Example 1
def main(): print ("Hello World!") print ("Guru99")
Here, we got two pieces of print- one is defined within the main function that is “Hello World!” and the other is independent, which is “Guru99”. When you run the function def main ():
It is because we did not declare the call function “if__name__== “__main__”.
It is important that after defining the main function, you call the code by if__name__== “__main__” and then run the code, only then you will get the output “hello world!” in the programming console. Consider the following code
def main() Example 2
def main(): print("Hello World!") if __name__ == "__main__": main() print("Guru99")
- When Python interpreter reads a source file, it will execute all the code found in it.
- When Python runs the “source file” as the main program, it sets the special variable (__name__) to have a value (“__main__”).
- When you execute the main function in python, it will then read the “if” statement and checks whether __name__ does equal to __main__.
- In Python “if__name__== “__main__” allows you to run the Python files either as reusable modules or standalone programs.
The __name__ variable and Python Module
To understand the importance of __name__ variable in Python main function method, consider the following code:
def main(): print("hello world!") if __name__ == "__main__": main() print("Guru99") print("Value in built variable name is: ",__name__)
Now consider, code is imported as a module
import MainFunction print("done")
Here, is the code explanation:
Like C, Python uses == for comparison while = for assignment. Python interpreter uses the main function in two ways
import as a module
- __name__= module’s filename
- if statement == false, and the script in __main__ will not be executed
When the code is executed, it will check for the module name with “if.” This mechanism ensures, the main function is executed only as direct run not when imported as a module.
Above examples are Python 3 codes, if you want to use Python 2, please consider following code
def main(): print "Hello World!" if __name__== "__main__": main() print "Guru99"
In Python 3, you do not need to use if__name. Following code also works
def main(): print("Hello World!") main() print("Guru99")
Note: Make sure that after defining the main function, you leave some indent and not declare the code right below the def main(): function otherwise, it will give indent error.