Базовый синтаксис Python3
Кодирование
По умолчанию исходные файлы Python3 используютUTF-8кодировку, и все строки являются строками Unicode.
Конечно, вы также можете указать другую кодировку для исходного файла:
# -*- coding: cp-1252 -*-
Приведённое выше определение позволяет исходному файлу использовать символы из набора символов Windows-1252, подходящего для болгарского, белорусского, македонского, русского и сербского языков.
Идентификаторы
- Первый символ должен быть буквой (a-z, A-Z) или знаком подчёркивания_ 。
- Остальные части идентификатора состоят из букв, цифр и знаков подчёркивания.
- Идентификаторы чувствительны к регистру; count и Count — разные идентификаторы.
- У идентификаторов нет жёсткого ограничения длины, но рекомендуется делать их краткими (обычно не более 20 символов).
- Зарезервированные ключевые слова запрещены; например, if, for и class нельзя использовать в качестве идентификаторов.
Допустимые идентификаторы:
age = 25 # 普通变量名,最常见 user_name = "Alice" # 用下划线连接单词,清晰易读 _total = 100 # 下划线开头通常表示“内部使用”或“私有” MAX_SIZE = 1024 # 全大写通常表示“常量”(固定不变的值) calculate_area() # 函数名,动词+名词 StudentInfo # 类名,首字母大写(驼峰命名法) __private_var # 双下划线开头,有特殊含义
Недопустимые идентификаторы:
2nd_place = "silver" # 错误:以数字开头 user-name = "Bob" # 错误:包含连字符 class = "Math" # 错误:使用关键字 $price = 9.99 # 错误:包含特殊字符 for = "loop" # 错误:使用关键字
Python 3 допускает символы Unicode в качестве идентификаторов, поэтому для имён переменных можно использовать китайские иероглифы; идентификаторы, не входящие в ASCII, также разрешены.
姓名 = "张三" # 合法 π = 3.14159 # 合法
Проверить, является ли идентификатор допустимым:
Пример
try:
exec(f"{name} = None")
return True
except:
return False
print(is_valid_identifier("2var")) # False
print(is_valid_identifier("var2")) # True
Зарезервированные ключевые слова Python
Зарезервированные слова — это ключевые слова; мы не можем использовать их в качестве имён идентификаторов. Стандартная библиотека Python предоставляет модуль keyword, который может вывести все ключевые слова текущей версии:
>>> import keyword >>> keyword.kwlist ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] >>>
| Категория | Ключевое слово | Описание |
|---|---|---|
| Логические значения | True | Логическое истинное значение |
False | Логическое ложное значение | |
None | Представляет пустое значение или отсутствие значения | |
| Логические операции | and | Логическая операция И |
or | Логическая операция ИЛИ | |
not | Логическая операция НЕ | |
| Условное управление | if | Условный оператор |
elif | Иначе если (сокращение от else if) | |
else | Ветвь иначе | |
| Управление циклом | for | Цикл итерации |
while | Условный цикл | |
break | Выйти из цикла | |
continue | Пропустить остаток текущего цикла и перейти к следующей итерации | |
| Обработка исключений | try | Попытаться выполнить блок кода |
except | Перехватить исключение | |
finally | Блок кода, который выполняется независимо от того, возникло исключение или нет | |
raise | Вызвать исключение | |
| Определение функции | def | Определить функцию |
return | Вернуть значение из функции | |
lambda | Создать анонимную функцию | |
| Классы и объекты | class | Определить класс |
del | Удалить ссылку на объект | |
| Импорт модуля | import | Импортировать модуль |
from | Импортировать определённую часть из модуля | |
as | Создать псевдоним для импортированного модуля или объекта | |
| Область действия | global | Объявить глобальную переменную |
nonlocal | Объявить нелокальную переменную (используется во вложенных функциях) | |
| Асинхронное программирование | async | Объявить асинхронную функцию |
await | Дождаться завершения асинхронной операции | |
| Другие | assert | Assert, используется для проверки истинности условия |
in | Проверить принадлежность | |
is | Проверить идентичность объекта (является ли он тем же объектом) | |
pass | Пустой оператор, используемый в качестве заполнителя | |
with | Контекстный менеджер, используемый для управления ресурсами | |
yield | Вернуть значение из функции-генератора |
Дополнительная справка по зарезервированным ключевым словам Python:https://www.example.com/python3/python3-keyword.html。
Комментарии
В Python однострочные комментарии начинаются с#и записываются следующим образом:
Пример (Python 3.0+)
При выполнении приведённого выше кода вывод будет следующим:
Hello, Python!
Многострочные комментарии могут использовать несколько#знаков решётки, а также'''и""":
Пример (Python 3.0+)
При выполнении приведённого выше кода вывод будет следующим:
Hello, Python!
Строки и отступы
Самая отличительная особенность Python — использование отступов для представления блоков кода; фигурные скобки не нужны.{} 。
Количество пробелов в отступе может быть разным, но инструкции в одном и том же блоке кода должны содержать одинаковое количество пробелов отступа. Пример:
Пример (Python 3.0+)
В следующем коде последняя строка инструкций имеет непоследовательный отступ, что вызовет ошибку времени выполнения:
Пример
print ("Answer")
print ("True")
else:
print ("Answer")
print ("False") # Непоследовательный отступ вызовет ошибку времени выполнения
Из-за непоследовательного отступа вышеприведённая программа после выполнения выдаст ошибку, похожую на следующую:
File "test.py", line 6
print ("False") # 缩进不一致,会导致运行错误
^
IndentationError: unindent does not match any outer indentation level
Многострочные инструкции
Python обычно записывает по одной инструкции на строку, но если инструкция очень длинная, мы можем использовать обратную косую черту\для реализации многострочных инструкций, например:
total = item_one + \
item_two + \
item_three
Пример
item_two = 2
item_three = 3
total = item_one + \
item_two + \
item_three
print(total) # Вывод: 6
Многострочные инструкции внутри [], {}, или () не требуют обратной косой черты\, например:
total = ['item_one', 'item_two', 'item_three',
'item_four', 'item_five']
Типы чисел
В Python есть четыре типа чисел: целые числа, логические значения, числа с плавающей запятой и комплексные числа.
- int(целое число), например 1; существует только один целочисленный тип, int, представленный как длинное целое, без типа Long в Python 2.
- bool(логический тип), например True.
- float(число с плавающей запятой), например 1.23, 3E-2
- complex(Комплексные числа) - Комплексные числа состоят из действительной части и мнимой части, в форме a + bj, где a — действительная часть, b — мнимая часть, а j обозначает мнимую единицу. Например, 1 + 2j, 1.1 + 2.2j
String
- В Python одинарные кавычки'и двойные кавычки"используются абсолютно одинаково.
- Использование тройных кавычек ('''или""") позволяет задать многострочную строку.
- Управляющий символ\。
- Обратные слеши можно использовать для экранирования; использованиеrможет предотвратить экранирование обратным слешем. Например,r"this is a line with \n"Тогда\nбудет отображено, а не перенос строки.
- Литеральная конкатенация строк, например"this " "is " "string"автоматически преобразуется вthis is string。
- Строки можно конкатенировать с помощью+оператора и повторять с помощью*оператора.
- Строки в Python имеют два способа индексации: слева направо, начиная с0, и справа налево, начиная с-1.
- Строки в Python нельзя изменить.
- В Python нет отдельного типа символа; символ — это просто строка длиной 1.
- Срезы строкstr[start:end], где start (включительно) — индекс начала среза, а end (исключительно) — индекс конца среза.
- Срезы строк могут включать параметр шага, step, со следующим синтаксисом:str[start:end:step]
word = '字符串' sentence = "这是一个句子。" paragraph = """这是一个段落, 可以由多行组成"""
Пример (Python 3.0+)
Здесь r означает raw, то есть raw-строку, которая автоматически экранирует обратные косые черты, например:
>>> print('\n') # 输出空行
>>> print(r'\n') # 输出 \n
\n
>>>
Вывод приведенного выше примера:
123456789 12345678 1 345 3456789 24 123456789123456789 123456789你好 ------------------------------ hello example hello\nexample
Пустые строки
Используйте пустые строки между функциями или между методами класса, чтобы обозначить начало нового блока кода. Также используйте пустую строку между определениями класса и функции, чтобы выделить начало определения функции.
Пустые строки отличаются от отступов в коде. Пустые строки не являются частью синтаксиса Python. Если вы не вставляете пустые строки, интерпретатор Python всё равно запустит программу без ошибок. Однако назначение пустых строк — отделять два фрагмента кода с разными функциями или смыслом, что упрощает дальнейшее сопровождение или рефакторинг кода.
Запомните:Пустые строки также являются частью программного кода.
Ожидание ввода пользователя
После выполнения следующей программы и нажатия клавиши Enter она будет ожидать ввода пользователя:
Пример (Python 3.0+)
В приведённом выше коде,\n\nперед выводом результата будут выведены две новые пустые строки. Как только пользователь нажмёт клавишуenter, программа завершится.
Несколько операторов в одной строке
Python может использовать несколько операторов в одной строке, с точками с запятой между операторами;в качестве разделителей. Ниже приведён простой пример:
Пример (Python 3.0+)
При выполнении приведённого выше кода с помощью скрипта вывод будет таким:
example
При выполнении в интерактивной командной строке вывод будет таким:
>>> import sys; x = 'example'; sys.stdout.write(x + '\n') example 7
Здесь 7 указывает количество символов,exampleсодержит 6 символов,\nобозначая один символ, в сумме получается7символов.
>>> import sys
>>> sys.stdout.write(" hi ") # hi 前后各有 1 个空格
hi 4
Несколько операторов образуют группу кода
Группа операторов с одинаковым отступом образует блок кода, который мы называем группой кода.
Составные операторы, такие как if, while, def и class, начинаются с ключевого слова в первой строке и заканчиваются двоеточием ( : ). Одна или несколько строк кода после этой строки образуют группу кода.
Первую строку и следующую за ней группу кода мы называем секцией.
Ниже приведён пример:
if expression : suite elif expression : suite else : suite
Вывод print
printПо умолчанию вывод переносится на новую строку. Чтобы не было переноса строки, нужно добавить в конце переменнойend="":
Пример (Python 3.0+)
Результат выполнения приведенного выше примера:
a b --------- a b
Для получения дополнительной информации см.:Вывод print без новой строки в Python2 и Python3
import и from...import
В Python используйтеimportилиfrom...importдля импорта соответствующего модуля.
Импортируйте весь модуль (somemodule), формат такой:import somemodule
Импортируйте функцию из модуля, формат такой:from somemodule import somefunction
Импортируйте несколько функций из модуля, формат такой:from somemodule import firstfunc, secondfunc, thirdfunc
Импортируйте все функции из модуля, формат такой:from somemodule import *
Импортируйте модуль sys
Импортируйте члены argv и path модуля sys
Для получения дополнительной информации обратитесь к:Основное различие между Python import и from … import
Аргументы командной строки
Многие программы могут выполнять некоторые операции для просмотра базовой информации. Python может использовать параметр -h для просмотра справочной информации по каждому параметру:
$ python -h usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... Options and arguments (and corresponding environment variables): -c cmd : program passed in as string (terminates option list) -d : debug output from parser (also PYTHONDEBUG=x) -E : ignore environment variables (such as PYTHONPATH) -h : print this help message and exit [ etc. ]
При выполнении Python в виде скрипта можно получать входные параметры командной строки. Для конкретного использования см.Аргументы командной строки Python 3。
Другие расширения