Базовый синтаксис 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   # 合法

Проверить, является ли идентификатор допустимым:

Пример

def is_valid_identifier(name):
    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Дождаться завершения асинхронной операции
ДругиеassertAssert, используется для проверки истинности условия
inПроверить принадлежность
isПроверить идентичность объекта (является ли он тем же объектом)
passПустой оператор, используемый в качестве заполнителя
withКонтекстный менеджер, используемый для управления ресурсами
yieldВернуть значение из функции-генератора

Дополнительная справка по зарезервированным ключевым словам Python:https://www.example.com/python3/python3-keyword.html。


Комментарии

В Python однострочные комментарии начинаются с#и записываются следующим образом:

Пример (Python 3.0+)

#!/usr/bin/python3 # Первый комментарий print ("Hello, Python!") # Второй комментарий

При выполнении приведённого выше кода вывод будет следующим:

Hello, Python!

Многострочные комментарии могут использовать несколько#знаков решётки, а также'''и""":

Пример (Python 3.0+)

#!/usr/bin/python3 # Первый комментарий # Второй комментарий '''Третий комментарий Четвёртый комментарий''' """Пятый комментарий Шестой комментарий""" print ("Hello, Python!")

При выполнении приведённого выше кода вывод будет следующим:

Hello, Python!

Строки и отступы

Самая отличительная особенность Python — использование отступов для представления блоков кода; фигурные скобки не нужны.{} 。

Количество пробелов в отступе может быть разным, но инструкции в одном и том же блоке кода должны содержать одинаковое количество пробелов отступа. Пример:

Пример (Python 3.0+)

if True: print ("True") else: print ("False")

В следующем коде последняя строка инструкций имеет непоследовательный отступ, что вызовет ошибку времени выполнения:

Пример

if True:
    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_one = 1
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+)

#!/usr/bin/python3 str='123456789' print(str) # Выводит строку print(str[0:-1]) # Выводит все символы с первого по предпоследний print(str[0]) # Выводит первый символ строки print(str[2:5]) # Выводит символы с третьего по шестой (не включая шестой) print(str[2:]) # Выводит все символы начиная с третьего print(str[1:5:2]) # Выводит каждый второй символ со второго по пятый (размер шага 2) print(str * 2) # Выводит строку дважды print(str + 'Hello') # Конкатенация строк print('------------------------------') print('hello\nexample') # Используйте обратную косую черту (\\)+n для экранирования специальных символов print(r'hello\nexample') # Добавьте r перед строкой, чтобы указать raw-строку, так что экранирование не будет происходить

Здесь 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+)

#!/usr/bin/python3 input("\n\nВыход после нажатия клавиши Enter.")

В приведённом выше коде,\n\nперед выводом результата будут выведены две новые пустые строки. Как только пользователь нажмёт клавишуenter, программа завершится.


Несколько операторов в одной строке

Python может использовать несколько операторов в одной строке, с точками с запятой между операторами;в качестве разделителей. Ниже приведён простой пример:

Пример (Python 3.0+)

#!/usr/bin/python3 import sys; x = 'example'; sys.stdout.write(x + '\n')

При выполнении приведённого выше кода с помощью скрипта вывод будет таким:

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+)

#!/usr/bin/python3 x="a" y="b" # Вывод с новой строкой print( x ) print( y ) print('---------') # Вывод без новой строки print( x, end=" " ) print( y, end=" " ) print()

Результат выполнения приведенного выше примера:

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

import sys print('================Режим импорта Python==========================') print ('Аргументы командной строки:') for i in sys.argv: print (i) print ('\nпуть Python — это',sys.path)

Импортируйте члены argv и path модуля sys

from sys import argv,path # Импорт конкретных членов print('================python from import===================================') print('path:',path) # Поскольку член path уже импортирован, при обращении здесь sys.path не нужен

Для получения дополнительной информации обратитесь к:Основное различие между 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。

Другие расширения