введение: (Статья относительно длинная, рекомендуется читать каталог и узнавать по запросу~)
Когда я только начал изучать программирование, я немного слышал о Python, но в школе были только C, C++, Java и C#. Точно так же, как фраза PHP «PHP — лучший язык» — это бытовая шутка, то же самое можно сказать и о Python.«Жизнь слишком коротка, я использую Python». Чаще всего слово Python используется в некоторых технических группах. Некоторые начальники что-то говорят, когда открывают ротPy транзакция, как новый разработчик, притаившийся в группе, я всегда Я не могу не чувствовать себя так:
Реальный контакт с Python был в предыдущей компании, тогда начальник попросил меня написать скрипт для скачивания Недавно упакованный апк на складе, на тот момент уже окончательно собранный в работоспособный. py, потому что я не понимаю структуру данных в Python, используются все строковые переменные, Позже босс научил меня, что существует такая вещь, как кортеж. Поскольку он сделан из самого Android, Python не используется во многих случаях, и я думаю, что Kotlin немного интересен, поэтому я не изучал Python.
Некоторое время назад я почти справился с поставленной задачей, когда мне было скучно и я огляделся, я увидел закулисье по соседству. Младший брат Сюньлэй загружает вещи как сумасшедшие, создает папки, вставляет и копирует, я не знаю, я думаю, что он дает Насчет классификации маленьких фильмов я узнал после того, как спросил потом, что операция просила выложить все аудио на сервер вниз файл, а затем вниз в соответствующую папку в соответствии с соответствующей категорией, так что он делает это:Thunder загружает песни партиями -> См. группировку песен mysql. -> создать папку -> Вставьте скопированные песни в эту папку, на первый взгляд процесс довольно простой, но есть Там более 4700 песен и сотни каталогов.Боюсь, что делать это придется несколько дней медленно, да и времени занимает очень много. Легко сделать ошибку, механически повторяя определенную работу. Глядя на отчаявшегося брата за кулисами:
Не выдержав, он решил написать py-скрипт, чтобы спасти его, а также имел в виду общую логику программы:
- 1. Позвольте фону экспортировать оператор построения таблицы mysql, установите mysql для построения таблицы;
- 2. Питон даже mysql, читаем данные в таблице
- 3. Напишите оператор SQL-запроса с ограничением дедупликации и запросите, чтобы получить все категории.
- 4. Все полученные категории являются папками, которые необходимо создать, и папки итеративно создаются пакетами;
- 5. URL-адрес загрузки песни запроса sql и классификация, соединение и запись в файл;
- 6. Прочитайте файл, повторите: загрузите URL-адрес, чтобы перехватить имя файла и путь классификации и объединить его в файл.
Полный путь к URL-адресу, просто вызовите функцию, связанную с загрузкой, чтобы загрузить URL-адрес по соответствующему пути.
Логика довольно проста и понятна, но со всякими ямами можно разобраться только после дня метания Столкнулись со следующими проблемами:
- 1. Самая избитая проблема декодирования: по умолчанию используется Python2, искаженные китайские символы, различные онлайн-поиски,
Задавать метод кодирования бесполезно, скальп онемеет, особенно при перехвате имени файла. Позже сменил волну на Python3, что очень удобно, и проблем нет.
- 2. Исключение не захватывается, на некоторых ресурсах фейл 404, и находится только посередине.;
- 3. Хочу получить многопоточную загрузку, т.к. не знаю многих основ Python, а потом отказался;
Когда вы видите, что все файлы загружены в соответствующее место, возникает спонтанное чувство выполненного долга. По сравнению с написанием приложения, чтобы каждый день рисовать интерфейс, запрашивать, анализировать и отображать данные, это намного интереснее. Ведь обучение и развитие интереса очень важно. Просто изучите Python с нуля. Чем больше вы изучаете, тем больше вы чувствуете:
Причины Свободное время на работе, длившееся две недели, окончательно сдало базовые знания. В очередной раз есть эта статья.Ведь новички могли что-то не так понять.Надеюсь увидеть Большая часть содержания статьи взята из: "Учебник по Python 3"и"Запись от маленькой черепахи с отсчетом от нуля для изучения Python》 Если вам интересно, вы можете прочитать эти две книги~ Эта статья не является вводным руководством.Не рекомендуется для тех, у кого нет опыта программирования! Совершенно белые могут читать эту книгу: "Первая вводная книга Xiaobai по программированию Python》
содержание
[TOC]
1. Учебные ресурсы, связанные
Документация API
- Официальный сайт:www.python.org/
- API:docs.Python.org/release/3.6…
- Китайский API(3.5.2):Значение Python.US Способность /translate/afraid…
- awesome-python:GitHub.com/Vinhe/awe так…
- awesome-python(перевести):GitHub.com/JoBobler/awe…
книги
- "Учебник по Python 3":Ууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууу.com/Python3/Пак Ючон…
- "Лао Ци нулевой базовый курс Python":Woohoo. git book.com/book/ ох эксплойт/…
- "Запись от маленькой черепахи с отсчетом от нуля для изучения Python》: Очень хорошая вводная книга, я только что прочитал это~
- "Программирование ядра Python (3-е издание)": Это тоже очень известная книга, я ее еще не читала~
2. Вопрос изучения Python2 или Python3
! ! ! Синтаксис Python 3 не полностью совместим с синтаксисом Python 2! ! !
Цайцю только недавно выучил Python, поэтому не смел громко пищать.Самая прямая причина:Python 3 по умолчанию использует utf-8., имея дело с китайцами, вы можете Уменьшите количество проблем с кодеками иPython 2 по умолчанию использует ascii.
Другая причина: Идя в ногу со временем, ИТ-индустрия развивается очень быстро, и полный переход — это только вопрос времени; Например: когда Android Studio только вышла, карты всякие, фигня, Можно только открыть проект и прочие дизлайки, пользоваться им не так просто, как Eclipse, правда, Android сейчас развит Любой, кто использует Eclipse, будет подвергнут дискриминации.Кроме того, чиновник определил, что Python 2.7 будет Выход на пенсию в 2020 году. Так:Жизнь слишком коротка, я использую Python3.
Ожидается, что Python 2.7 уйдет на пенсию в 2020 году.
Другие сравнительные статьи можно найти здесь:
Различия между Python 2.x и 3.x Python2orPython3 Разница между Python3.x и Python2.x
3. Построение среды разработки
скачать и установить питон
Загрузка с официального сайта:www.python.org/downloads/, Выберите нужную версию и операционную систему.
- Windows
Следующий шаг дурака в порядке, не забудьте поставить галочкуAdd Python x.x to Path! чек После его установки вам не нужно самостоятельно настраивать переменные среды.После завершения установки откройте CMD и введите:python3 -VВы можете просмотреть установленную версию Python, указав, что установка прошла успешно. Если вы получили сообщение об ошибке: python3 не является внутренней или внешней командой, поздравляем! Вы можете скачать его на Baidu:Конфигурация переменной среды Python3сейчас~
- Mac
метод первый: Установка пакета под официальный сайт, дурак следующий шаг;Способ второй: если естьHomebrew, терминальный вход:brew install Python3Просто установите его.
- Ubuntu: обычно встроенный, выполните следующую команду, чтобы просмотреть версию, если вы хотите установить свой любимый
Версию можно ввести:sudo apt-get установить номер версии Pythonустановить
PyCharm скачать и установить
На самом деле, после установки Python вы можете выполнять программирование на Python, вводить python3 прямо в командной строке, вы можете использовать собственныеIDLEразработаны; или непосредственно с помощью Sublime Text или NotePad++ Инструмент просмотра кода этого типа напрямую записывает код, а затем сохраняет его в виде файла с суффиксом .py, а затем python3. Просто запустите этот файл py.
Хотя это возможно, но довольно неудобно, напримерпроблемы с отступами, Python выражает блоки кода с помощью отступов, Когда кода слишком много, а отступ строки неправильный, результат может быть далек от того, что вы ожидали.Умные советы, удобное управление библиотекой зависимостейПодождите, само собой эти два, особенности должны быть испытаны на себе.
Загрузка с официального сайта:woohoo.jet brains.com/py charm/Доу…скачатьProfessionalверсия, дурацкая установка, после открытия выскочит страница регистрации, чекLicense server,существуетLicense server addressВойдите на сервер регистрации, Поищите много в Интернете, и тогда вы сможете с радостью разработать ру.
Основное использование программного обеспечения также очень простое, IDE Jetbrains аналогична ~ Следует отметить, что если вы хотите переключить номер версии Python, от которого зависит ваш проект: Откройте настройки (Preference или settings) и измените их:
4. Базовый здравый смысл
1) Пакет руководства
Иногда в проекте необходимо ввести другие модули или функцию в модуле, которую необходимо использовать.importиfrom...import, пример использования следующий:
import sys # 导入整个模块
from sys import argv # 导入模块中的需要用到的部分
from urllib.error import URLError, HTTPError # 多个的时候可以用逗号隔开
from sys import * # 导出模块中的所有
# 另外还可以使用as关键字为模块设置别名,比如 import sys as s
# 调用的时候直接s.argv 这样就可以了。
2) Правила именования ключевых слов и идентификаторов
При именовании идентификаторов, таких как имена переменных или методов, вы должны обратить внимание на то, что вы не можете То же, что и ключевые слова в Python, черезkeyword.kwlistВсе ключевые слова могут быть запрошены: Вам нужно импортировать модуль ключевых слов~
За исключением того, что оно не может совпадать с ключевым словом, правила именования идентификаторов: состоит из букв, цифр и знаков подчеркивания, апервый символдолжно бытьбуква или подчеркивание, Пара питонДеликатный случай; по поводу соглашений об именах ничего Обязательно, чтобы весь проект оставался единым, и прилагается правило именования, найденное в Интернете:
- 1.Имя элемента: первая буква заглавная, остальные строчные, для удобства чтения используется подчеркивание, например: Ui_test;
- 2.имя пакета и имя модуля: все строчные буквы;
- 3.имя класса: первая буква заглавная, остальные строчные, несколько слов в верблюжьем регистре;
- 4.имя метода (функции): все строчные буквы, несколько слов разделяются символом подчеркивания;
- 5.имя параметра: слова в нижнем регистре, если они конфликтуют с ключевыми словами, добавить подчеркивание перед именем параметра, например _print;
- 6.Переменная: нижний регистр, несколько слов разделяются символом подчеркивания;
- 7.постоянный: все слова в верхнем регистре, несколько слов разделяются символом подчеркивания;
3) Примечания
Использование Python#выполнятьоднострочный комментарий,многострочный комментарийзатем используйтетройные кавычки,Например:
'''
这是
Python的
多行注释
'''
4) печать вывода на печать и функция ввода ввода
Изучая новый язык программирования, первая программа в основном печатает Hello world,
Вывод результата на экран — наиболее интуитивно понятный способ проверки результата выполнения кода, поэтому
Надо сначала научитьсяprint
иinput
использование!
print():
- 1. Может выводить различныебеспорядочный тип данныхПреобразование непосредственно в строковый вывод на печать;
- 2.print будет переноситься по умолчанию, еслине заворачиватьМожет:print(xxx, end = "")
- 3. Поддержка
格式化输出
, аналогично использованию printf в C, запятая, разделенная до и после, изменилась на **%**:
input():
Читает строку с клавиатуры и автоматически игнорирует символы новой строки, а все формы ввода обрабатываются как строки. Вы можете написать некоторую информацию о запросе ввода в круглых скобках, например: input("Пожалуйста, введите строку:")Выходной результат:
5) функция помощи
Излишне говорить, что они есть во многих языках программирования, которые можно использовать для просмотра определенного内置函数(BIF)
связанное использование, напримерhelp(print), выведет этот результат:
6) реж функция
Чтобы просмотреть все свойства и методы объекта, просто добавьте запрашиваемый объект в скобках, Например, определите класс, а затем используйте dir для получения всех свойств и методов:
частичный вывод:
7) Посмотреть все встроенные функции (BIF)
воплощать в жизнь:print(dir(sys.modules['builtins']))Все встроенные функции можно распечатать.
8) Несколько операторов в одной строке и один оператор в нескольких строках
Если вы хотите написать несколько операторов в одной строке, вы можете использовать **;
** (точка с запятой) разделены;
Иногда оператор может быть слишком длинным, вы можете использовать **\
** (обратная косая черта) для подключения,
А в **[] , {} , ()** нет необходимости использовать обратную косую черту для подключения.
5. Типы данных
1) Переменная
Определить переменную в Python3 очень просто и грубо, всего одинимя переменной = начальное значениеТип данных переменной определяется при присвоении Имя переменной ссылается на значение, а также ссылается на значение.
Его тип, если вы его не понимаете, просто посмотрите на пример, **type
**Можно просматривать
Тип данных переменной (также обратите внимание, что Python чувствителен к регистру, чувствителен к регистру!):
Выходной результат:
Также на Python**支持多个变量赋值
**, следующие два присвоения являются правильными:
a = b = c = 1
a,b,c = 1,2,"Python"
Кстати, вы также можете использовать **del
ключевые словаУдалить ссылку на объект**, но вызвать после удаления
Переменные сообщат об ошибке!
выходной результат:
2) Номер (Число)
В Python 3 поддерживаются три числовых типа:int
,float
,complex
(множественное число)
Примечание: в Python3int
Неразличимы целое и длинное целое, целоенеограниченная длина,
Таким образом, легко производить расчеты больших чисел. Помимо десятичного, базовое представление имеет следующий вид:двоичный 0b,Восьмеричный 0o,шестнадцатеричный 0xначало.
Поддержка Pythonпрямая запись комплексного числа, то есть **(a+bj)форма,сложный класспример,
Его можно вычислить напрямую, например:a = 1 + 2j + 3 * 4j, выведите a, результат:(1+14j)**
вещественные числа+мнимое число, кроме a+bj можно также использовать **complex(a,b)
сказал, что оба
тип с плавающей запятой, который можно назвать.real
получить реальную часть,.imag
** получить мнимую часть,abs()
найти комплексные числа
модель (√(а^2 + б^2)).
Преобразование числового типа: (В документации Python квадратные скобки [] заключены для обозначения необязательности)
функция | эффект |
---|---|
int(x[,base]) | Преобразование x в целое число, вторым параметром является базовый тип указанной строки. |
float(x) | преобразовать x в число с плавающей запятой |
complex(real [,imag]) | создать множественное число |
str(x) | преобразовать объект x в строку |
repr(x) | Преобразовать объект x в строку выражения |
eval(str) | Оценивает допустимое выражение Python в строке и возвращает объект |
tuple(s) | Преобразовать последовательность s в кортеж |
list(s) | Преобразование последовательности в список |
chr(x) | Преобразование целого числа в символ |
unichr(x) | Преобразование целого числа в символ Unicode |
ord(x) | преобразует символ в его целочисленное значение |
hex(x) | Преобразование целого числа в шестнадцатеричную строку |
oct(x) | Преобразование целого числа в восьмеричную строку |
bin(x) | Преобразование целого числа в двоичную строку |
математическая функция:
функция | эффект |
---|---|
abs(x) | Возвращает абсолютное значение числа, например, abs(-10) возвращает 10 |
ceil(x) | Возвращает целое число, например math.ceil(4.1) возвращает 5 |
cmp(x, y) | Возвращает -1, если x y. |
exp(x) | Возвращает e в степени x (ex), например math.exp(1) возвращает 2,718281828459045. |
fabs(x) | Возвращает абсолютное значение числа, например math.fabs(-10) возвращает 10,0 |
floor(x) | Возвращает округленное целое число в меньшую сторону, например, math.floor(4.9) возвращает 4 |
log(x) | Например, math.log(math.e) возвращает 1,0, а math.log(100,10) возвращает 2,0. |
log10(x) | Возвращает логарифм x по основанию 10, например, math.log10(100) возвращает 2,0 |
max(x1, x2,...) | Возвращает максимальное значение для данного аргумента, который может быть последовательностью. |
min(x1, x2,...) | Возвращает минимальное значение заданного аргумента, который может быть последовательностью. |
modf(x) | Возвращает целую часть и дробную часть x с тем же числовым знаком, что и x, Целая часть представлена как тип с плавающей запятой. |
pow(x, y) | х в степени у |
round(x [,n]) | Возвращает округленное значение числа с плавающей запятой x, если задано n, это означает округление до Количество цифр после запятой. |
sqrt(x) | Возвращает квадратный корень числа x, число может быть отрицательным, тип возвращаемого значения — вещественное число, Например, math.sqrt(4) возвращает 2+0j. |
3) Логический тип (Bool)
использовать**True
иFalse
** для обозначения истинности и ложности, его также можно рассматривать как целое число, Истина равна 1,
False 0, но участвовать в операциях не рекомендуется!
4) Список (Список)
Подобно массиву,аккуратный,Переменная длины содержимого,использоватьСкобки []Представление, используемое между элементамиразделенные запятой,Типы данных элементов могут быть разными.! Пример использования выглядит следующим образом (dir(list) может просматривать все свойства и методы j): (Подсказка:Списки могут быть вложенными, если вы хотите получить доступ к определенному значению в списке в списке, вы можете написать несколько [], например: list1[1][2])
list1 = [1,2.0,"a",True] # 定义列表
print(list1[1]) # 通过[下标]访问元素,从0开始,结果输出:2.0
print(list1[1:3]) # 支持截取,比如这里的[1:3],结果输出:[2.0, 'a']
print(list1[1:3:2]) # 还可以有第三个参数,步长,默认为1,结果输出:[2.0]
print(list1[2:]) # 输出结果:['a', True]
print(list1[-2]) # 负数的话从后面开始访问,结果输出:a
print(list1.index("a")) # 返回参数在列表中的位置,结果输出:2
# 修改列表元素
list1[1] = 3.0 # 直接获得元素后进行修改,此时列表元素:[1, 3.0, 'a', True]
# 添加元素
list1.append('Jay') # 追加一个元素,此时列表元素:[1, 2.0, 'a', True, 'Jay']
list1.insert(2,'pig') # 插入一个元素,此时列表元素:[1, 2.0, 'pig', 'a', True]
print(list1.pop()) # 移除最后一个元素,并返回元素的值,结果输出:True
# 删除元素
del list1[0] # 删除索引位置的值,此时列表元素:[2.0, 'a', True]
list1.remove('a') # 删除指定的元素值,此时列表元素:[1, 2.0, True]
# 其他(使用+号可以组合列表,*号可以重复列表)
print(list1+list1) # 输出结果:[1, 2.0, 'a', True, 1, 2.0, 'a', True]
print(list1*2) # 输出结果:[1, 2.0, 'a', True, 1, 2.0, 'a', True]
print('a' in list1) # 判断列表中是否有此元素,输出结果:True
print('b' not in list1) # 判断原始中是不是没有这个元素,输出结果:True
for x in list: # 迭代遍历列表
print(len(list1)) # 获得列表长度,结果输出:4
print(list1.count(1)) # 统计某个元素在列表中出现的次数,结果输出:2,因为True的值也是1
max(list1) # 获得列表中的元素最大值,列表元素类型需要为数字
min(list1) # 获得列表中的元素最小值,列表元素类型需要为数字
list1.sort() # 对原列表元素进行排序,本地排序(会修改值),返回None,
# 只能比较数字!默认从小到大,从大到小可以用可选参数,括号里加上:
# key = lambda x:-1*x
list1.reverse() # 反转列表元素,会修改列表,返回None
list2 = list1.copy() # 拷贝列表,重新开辟了内存空间!和等号赋值不一样!
list(tuple) # 将元组或字符串转换为列表
5) Кортеж (кортеж)
ограниченный список,Элементы в кортеже не могут быть изменены,использоватьСкобки()Выражать. Следует отметить, что когда кортежтолько один элемент в, должен быть после элементадобавить запятую, В противном случае он будет использоваться как оператор скобок! Кортежи можно использовать какПараметры, которые нельзя изменитьпередается функции, И кортежи занимают меньше памяти. использовать, кромеНевозможно изменить элементы кортежаза пределами, Остальные методы в основном такие же, как метод списка.
Кроме того, элементы в кортеже нельзя удалить, но их можноИспользуйте оператор del, чтобы удалить весь кортеж,
Однако он редко используется, потому что механизм повторного использования Python автоматически удалит кортеж, когда он больше не используется.
(Это немного похоже на gc~ в Java) Вы также можете использовать **tuple(list)
** Преобразование строки или списка в кортеж.
выходной результат:
6) Словарь (дикт)
и списки, кортежи черезпоследовательность индексов для индексации элементовРазные, словари используют **键值对
форма для хранения
данные, черезключи для индексации значений** при создании словаря,Ключ нельзя повторить, а последующие будут перезаписаны!
Поскольку ключи должны быть неизменяемыми, поэтомуключДоступные числа, строки или кортежи, ноне могу использовать список!
Используйте ** двоеточие:Разделить ключ и значение, использовать несколько пар ключ-значениеЗапятая, разделенная **; словари также поддерживают вложенность!
Примеры использования следующие:
dict1 = {} # 定义一个空字典
dict2 = {'a': 1, 'b': 2, 3: "c"} # 定义一个普通字典
dict4 = dict2.copy() # 浅复制一个字典
# 可以使用fromkeys创建并返回新的字典,有两个参数,键和键对应的值
# 值可以不提供,默认None,不过有个小细节要注意,下面的例子输出
# 的结果是:{1: ['a', 'b', 'c'], 2: ['a', 'b', 'c'], 3: ['a', 'b', 'c']}
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
dict3 = {}
dict3 = dict3.fromkeys(list1, list2)
print(dict3)
# 通过键查询对应的值,如果没有这个键会报错TypeError,这里输出结果:2
print(dict2['b'])
print(dict2.get("d")) # 通过get()方法查询键对应的值,没有的话会返回None
# 还可以加上一个默认的返回参数get(x,y)
print(dict2.setdefault("d")) # 和get()类似,如果找不到键的话会自动添加 键:None
print("d" in dict2) # 字典中是否有此键,这里输出结果:False
print("d" not in dict2) # 字典中是否没有此键,这里输出结果:True
print(dict2.keys()) # 返回字典中所有的键,这里输出结果:dict_keys(['a', 3, 'b'])
print(dict2.values()) # 返回字典中所有的值,这里输出结果:dict_values([1, 'c', 2])
print(dict2.items()) # 返回字典中所有的键值对,这里输出结果:
# dict_items([('a', 1), (3, 'c'), ('b', 2)])
# 修改键对应的值,此时字典元素:{3: 'c', 'a': 1, 'b': 'HaHa'}
dict2['b'] = 'HaHa'
dict2.update(b:'Pig') # 使用update方法可以更新键对应的值,不过键需要为字符串!
# 删除字典元素
del(dict2['b']) # 删除某个键值对,此时字典元素:{3: 'c', 'a': 1}
dict2.clear() # 移除字典中所有的键值对,此时剩下空字典:{}
del dict2 # 删除整个字典,删除后无法再重复引用!!!
print(dict2.pop('a')) # 根据键删除对应的值,返回被删除的值。
print(dict2.popitem()) # 删除一个项,随机,比如:('b', 2)
# 遍历字典:
for d in dict2:
print("%s:%s" % (d, dict2.get(d)))
for (k,v) in dict2.items():
print("%s:%s" % (k, v))
7) Коллекция (набор)
Сохраненные элементы в коллекциинеупорядоченный и неповторяющийся, поэтому вы не можете индексировать определенный элемент; использоватьбольшие скобки{}элементы упаковки,разделенные запятой,Если естьПовторяющиеся элементы автоматически удаляются! Еще одна вещь, которую следует отметить, это то, что еслиЧтобы создать пустую коллекцию, вы должны использовать set(), вместо {}, Благодаря вышеизложенному мы также знаем **{}затем напрямую создайтеПустой словарь**! Примеры использования следующие:
set1 = set() # 创建空集合
set2 = {1, 2, 3, 4, 5, 1} # 普通方式创建集合
print(set2) # 重复元素会被自动删除,输出结果:{1, 2, 3, 4, 5}
set3 = set('12345') # 字符串
print(set3) # 输出:{'2', '5', '3', '4', '1'},集合元素无序
print(6 in set2) # 判断集合中是否有此元素:输出结果:False
print(6 not in set2) # 判断集合中是否有此元素:输出结果:True
set2.add("6") # 添加元素
print(set2) # 输出结果:{1, 2, 3, 4, 5, '6'}
set2.remove(2) # 删除元素,如果删除的元素不存在会报错
print(set2) # 输出结果:{1, 3, 4, 5, '6'}
# 遍历集合,输出结果: 1 3 4 5 6
for data in set2:
print(data, end="\t")
# 使用frozenset()函数定义不可变集合
set4 = frozenset({1, 2, 3, 4, 5})
8) Строка
Обработка строк в Python является рутиной, и очень важно уметь обращаться со строками.
можно использовать**单引号('')
или双引号("")
изменить строку,
Если вы хотите, чтобы строка содержала форматирование, такое как отступ новой строки, вы можете использовать三括号('''''')
**
Чтобы изменить, как правило, вы можете использовать это, когда хотите напечатать текст абзаца.
Кроме того, строкаЭлементы не могут быть изменены после того, как они определеныТеперь, например, следующая строка str1[0] = 'x' сообщит об ошибке,
Его можно склеить только через +,*, фрагментацию и т.д., а то же содержимое строки можно получить косвенно, но это не оригинал
символов, переменная указывает на новую строку, а старая будет переработана механизмом повторного использования py!
строка доступа:
str1 = "Hello Python"
print(str1[3]) # 输出结果:l
print(str1[2:]) # 输出结果:llo Python
print(str1[2:5]) # 输出结果:llo
print(str1[2:10:2]) # 输出结果:loPt
print(str1[0:8] + str1[8:]) # 输出结果:Hello Python
str2 = str1[6:] * 3
print(str2) # 输出结果:PythonPythonPython
escape-символ:
escape-символ | эффект | escape-символ | эффект | escape-символ | эффект |
---|---|---|---|---|---|
конец линии\
|
символ продолжения строки | \\ |
Обратная черта | \' |
апостроф |
\a |
колокол | \b |
назад | \e |
побег |
\000 |
нулевой | \n |
новая линия | \v |
вертикальная вкладка |
\t |
горизонтальная вкладка | \r |
Входить | \f |
подача формы |
\o |
Восьмеричные числа представляют символы | \x |
Шестнадцатеричные числа представляют символы |
Различные встроенные методы:
имя метода | эффект |
---|---|
capitalize() | положить строкупервый символизменить накапитал |
casefold() | поставить всю строкувсе персонажиизменить нанижний регистр |
center(width) | Отцентрируйте строку и дополните ее пробелами до новой строки длины и ширины. |
count(sub[,start[,end]]) | Возвращает количество раз, когда одна и та же подпрограмма появляется в персонаже Шэнь, Начальный и конечный параметры указывают диапазон, необязательный |
encode(encoding= 'utf-8 ',errors='strict') | Кодировать строку в формате кодирования, заданном кодировкой |
endswith(sub[,start[,end]]) | Проверяет, заканчивается ли строка подстрокой, если она возвращает True, В противном случае вернуть False. Начальный и конечный параметры указывают диапазон, необязательный |
expandtabs([tabsize= 8]) | Преобразовать символ табуляции (\t) в строке в пробел, если параметр не указан, Количество пробелов по умолчанию: tabsize=8. |
find(sub[,start[,end]]) | Проверьте, содержится ли sub в строке, если да, верните значение индекса, В противном случае вернуть -1, начальный и конечный параметры указывают диапазон, необязательный |
index(sub[,start[,end]]) | То же, что и find, но вызывает исключение, если sub не находится в строке |
isalnum() | Если в строке есть хотя бы один символ и все символы Возвращает True, если это буква или цифра, в противном случае возвращает False |
isalpha() | Если в строке есть хотя бы одна строка и все символы Возвращает True для букв, в противном случае возвращает False |
isdecimal() | Возвращает True, если строка содержит только десятичные цифры, иначе возвращает False. |
isdigit() | если строкаСодержит только цифрыслово возвращает True, иначе возвращает False |
islower() | Если строка содержит не менеесодержит символ с учетом регистра, и эти символы все в нижнем регистре, вернуть True, иначе вернуть False |
isnumeric() | если строкаСодержит только числовые символы, возвращает True, иначе возвращает False |
isspace() | Возвращает True, если строка содержит только пробелы, иначе возвращает False. |
istitle() | Если строка озаглавлена (все слова начинаются с прописной буквы, остальные строчные), Возвращает True, иначе возвращает False |
isupper() | Если строка содержит хотя бы один символ с учетом регистра и эти Возвращает True, если все символы в верхнем регистре, иначе возвращает False. |
join(sub) | Используйте строку в качестве разделителя, вставьте между всеми символами в подпункте, используйте + для объединения большого количества символов Строковое время очень неэффективно, потому что сращивание со знаком плюс приведет к сбору мусора первого уровня при распределении памяти. эффективнее будет использовать соединение со сплайсингом, например: ''.join(['Hello','Python']) |
ljust(width) | Возвращает выровненную по левому краю строку, дополненную пробелами, в новую строку длины и ширины. |
lower() | Преобразует все прописные символы строки в строчные |
lstrip() | Удалить все пробелы слева от строки |
partition(sub) | Найдите подстроку, разбейте строку на 3 кортежа (до, до, после) Возврат, если строка не содержит ('исходная строка','','') |
replace(old, new[,count]) | Заменить старую подстроку в строке на новую, если указано количество, то количество замен не превышает count раз |
rfind(sub[,start[,end]]) | Аналогичен методу find(), но ищет справа |
rindex(sub[,start[,end]]) | Аналогичен методу index(), но ищет справа |
rjust(width) | Возвращает выровненную по правому краю строку, дополненную пробелами, в новую строку длины и ширины. |
rpartition(sub) | Аналогично partition(), но ищет справа |
rstrip() | убрать пробелы в конце строки |
split(sep=None,maxsplit=-1) | Без параметров строка по умолчанию разделяется пробелами в качестве разделителя, если параметр maxspli равен t. Если установлено вправо, разделяются только подстроки maxsplit, и возвращается список сплайсированных подстрок. |
splitlines([keepends]) | Разделенный '\n', возвращает список, содержащий каждую строку как элемент, если параметр keepends Если указано, возвращается предыдущая строка keepends |
startswith(prefix[,start[,end]]) | Проверяет, начинается ли строка с префикса, возвращает True, если это так, иначе возвращает False. Начальный и конечный параметры могут указывать проверку диапазона, необязательно |
strip([chars]) | Удалите все пробелы до и после строки, параметр chars может настроить удаленную строку, необязательно |
swapcase() | Обратный регистр в строке |
title() | Возвращает озаглавленную (все слова начинаются с прописных букв, остальные строчные) строку |
translate(table) | Преобразование символов в строку в соответствии с правилами таблицы (можно настроить с помощью str.maketrans('a','b')) |
upper() | Преобразует все символы нижнего регистра в строке в верхний регистр |
zfill(width) | Возвращает строку длины и ширины, исходная строка выровнена по правому краю, а передняя часть дополнена 0 |
форматирование строки:
На самом деле это просто использование метода форматирования Пример следующий:
# 位置参数
str1 = "{0}生{1},{2}{3}!".format("人","苦短","我用","Python")
print(str1) # 输出结果:人生苦短,我用Python!
# 关键字参数
str1 = "{a}生{c},{b}{d}!".format(a = "人", c = "苦短",b = "我用",d = "Python")
print(str1) # 输出结果:人生苦短,我用Python!
# 位置参数可以与关键字参数一起使用,不过位置参数需要在关键字参数前,否则会报错!
# 另外还有个叫替换域的东西,冒号代表格式化符号开始,比如下面的例子:
str1 = "{0}:{1:.4}".format("圆周率", 3.1415926)
print(str1) # 输出结果:圆周率:3.142
оператор формата:%
, я не буду этого говорить, это согласуется с приведенным выше print()!
9) Оператор
арифметические операторы:(+
-
*
/
%
**
(сила, сила)//
(этажное деление, без десятичных знаков))
print("3 + 7 = %d" % (3 + 7)) # 输出结果: 3 + 7 = 10
print("3 - 7 = %d" % (3 - 7)) # 输出结果: 3 - 7 = -4
print("3 * 7 = %d" % (3 * 7)) # 输出结果: 3 * 7 = 21
print("7 / 3 = %f" % (7 / 3)) # 输出结果: 7 / 3 = 2.333333
print("7 %% 3 = %d" % (7 % 3)) # 输出结果: 7 % 3 = 1
print("3 ** 6 = %d" % (7 ** 3)) # 输出结果: 3 ** 6 = 343
print("3 // 6 = %f" % (7 // 3)) # 输出结果: 3 // 6 = 2.000000
оператор сравнения:(==
!=
>
<
>=
<=
)
оператор присваивания:(==
+=
-=
*=
/=
%=
**=
//=
)
побитовые операторы:(&
(побитовое И)|
(побитовое ИЛИ)^
(XOR, отличается 1)~
(Отменить)<<
>>
)
Логические операторы:(and
or
not
)
член оператора:(in
not in
)
оператор идентификации(решая, следует ли ссылаться на один и тот же объект) :(is
is not
)
приоритет оператора:
**
(показатель)> ~ + -
(в обратном порядке, плюс или минус) > * / % //
(умножение и деление, остаток, деление на пол) > << >>
(движение влево и вправо)> &
(побитовое И)> ^ |
(исключающее ИЛИ, побитовое ИЛИ)> < <= > >=
(оператор сравнения)> оператор равенства > оператор присваивания
> оператор идентификации > член оператора > Логические операторы
10) Дата Время
Дата и время не относятся к структуре данных, но я думаю, что это очень распространено, поэтому я просто отмечаю их использование здесь~ Два модуля с тех пор:timeиdatetime, подробные примеры использования:
import time, datetime
# 获取当前时间
moment = time.localtime()
print("年:%s" % moment[0])
print("月:%s" % moment[1])
print("日:%s" % moment[2])
print("时:%s" % moment[3])
print("分:%s" % moment[4])
print("秒:%s" % (moment[5] + 1))
print("周几:%s" % (moment[6] + 1))
print("一年第几天:%s" % moment[7])
print("是否为夏令时:%s" % moment[8])
# 格式化时间(这里要注意strftime和strptime是不一样的!!!)
moment1 = time.strftime('%Y-%m-%d %H:%M:%S')
moment2 = time.strftime('%a %b %d %H:%M:%S %Y', time.localtime())
moment3 = time.mktime(time.strptime(moment2, '%a %b %d %H:%M:%S %Y'))
print(moment1) # 输出结果:2017-12-02 11:08:02
print(moment2) # 输出结果:Sat Dec 02 11:08:02 2017
print(moment3) # 输出结果:1512184082.0 日期转换为时间戳
# 获得当前时间戳
print(time.time()) # 输出结果:1512185208.0942981
# 获得当前时间(时间数组,还需strftime格式化下)
print(datetime.datetime.now()) # 输出结果:2017-12-02 11:34:44.726843
# 时间戳转换为时间
# 方法一:(输出结果:2017-12-02 11:08:02)
moment4 = 1512184082
moment5 = time.localtime(moment4) # 转换成时间数组
print(time.strftime('%Y-%m-%d %H:%M:%S', moment5)) # 格式化
# 方法二:
moment6 = datetime.datetime.utcfromtimestamp(moment4)
print(moment6) # 直接输出:2017-12-02 03:08:02
moment7 = moment6.strftime('%a %b %d %H:%M:%S %Y')
print(moment7) # 格式化后输出:Sat Dec 02 03:08:02 2017
# 延迟执行
time.sleep(秒)
6. Управление процессом
1) если условие суждение
нет в питонеswitch-case, дополнительно используяelif
вместо иначе, еслиКаждое условие должно сопровождаться **冒号(:)
,пройти через缩放
** для разделения кодовых блоков,
Будьте осторожны при гнездовании! Пример использования следующий:
выходной результат:
Кроме того, если условие истинно и вы не хотите ничего делать, вы можете напрямую использовать **pass空语句
**
2) пока цикл
нет в питонеdo-while, также обратите внимание на двоеточия и масштабирование!
Можно сочетать с**else
использовать, и无限循环
Такого рода вещи:while True:
**
Используйте следующее**break关键字
Может跳出循环
**.
Пример использования следующий:
выходной результат:
3) для петли
В отличие от цикла for в C или Java, его нельзя написать напрямую.for(int a = 0;a < 100;a++)Пример использования следующий:
выходной результат:
4) прерывать, продолжать, иначе
выход из цикла, продолжение пропускает оставшиеся операции и сразу переходит к следующему циклу; Else также может использоваться в цикле, когда условие цикла for не установлено, оно не будет выполнено, если разрыв будет первым!
5) Условное выражение (упрощенная версия if-else)
a = x if 条件 else y
6) Утверждать
когда**assert关键字
позднее решениеусловие ложно, программа автоматически вылетает и выкидываетИсключение AssertionErro**,
Обычно используется при тестировании программ, когда выполняется определенное условие, чтобы убедиться, что программа может работать нормально~
7) Итераторы и генераторы
迭代器
: используется для доступа к коллекции, являетсяМожет запомнить позицию прохожденияобъект, начнется с первого элемента
Начинайте посещать до конца двумя основными методами:iter()
иnext()
выходной результат:
生成器
должно называться **生成器函数
Ну, специальный вид функции, который используетyield
чтобы вернуть значение,
При вызове он возвращает生成器对象
, который по сути является итератором, просто более кратким,yieldСоответствующее значение при вызове функцииНе вернет ** сразу, только позвонитьnext()Он будет возвращаться только при использовании метода.При использовании for x в xxx фактически вызывается метод next().
Самый простой пример использования выглядит следующим образом:
выходной результат:
если вы используетеtype()Проверьте метод, вы обнаружите, что возвращаемый тип объекта:<class 'generator'>
По сравнению с итераторами генераторы более лаконичны и элегантны.Самый классический пример — реализация последовательности Фибоначчи:
def func(n):
a, b = 0, 1
while n > 0:
n -= 1
yield b
a, b = b, a + b
for i in func(10):
print(i, end="\t")
# 输出结果:1 1 2 3 5 8 13 21 34 55
7. Функция
Для некоторых повторно используемых блоков кода мы можем извлечь их и записать как функцию.
1) Определение функции
использоватьdef关键字
обрезка, затемИмя функцииискобки(передача параметров),
использоватьreturn关键字
Возвращаемое значение, если оно не записано, оно будет возвращено по умолчаниюNone值
,
Питон можетДинамическое определение типа функции, который возвращает значения разных типов, которые можно использовать с помощью列表打包多种类型的值
Одноразовый возврат, вы также можете использовать его напрямую元组返回多个值
;
Кроме того, если есть несколько параметров функции, вы можете использовать **逗号
разделены.
Другое предложение: первая строка оператора функции может опционально использоватьстрока документациидля хранения
Описание функции, использовать напрямуюКомментарий в тройных кавычках ** может быть включен, и его можно получить с помощью метода справки!
2) Фактический параметр участия в форме
Параметры при определении функции являются формальными параметрами, а фактические параметры передаются при вызове;
3) Аргументы ключевых слов
Когда параметров несколько, я боюсь, что параметры будут перепутаны и переданы неправильно. Укажите имя параметра формального параметра, например: **show(a = "a", b = "b")** вот так.
4) Параметры по умолчанию
При определении параметровдать начальное значение по умолчанию, вы можете назвать это без параметры для вызова функции, например:def sub(a = "1", b = "2"), при прямом звонке В sub() можно передать что угодно, или можно передать параметр sub(3), и он также может взаимодействовать с Аргументы ключевого слова указывают, какой аргумент передается.
5) Переменные параметры
Иногда количество передаваемых параметров функции может быть не фиксированным, например, если вы
Для вычисления суммы набора значений конкретное количество чисел неизвестно, и в это время можно использовать переменные параметры.
Просто добавьте ** перед параметром*
Нет(Фактически данные упакованы в кортеж), что представляет собой
Параметры являются переменными параметрами, если параметров несколько, запишите их вСледует использовать параметры после переменных параметров.
Параметр ключевого слова указывает **, иначе он будет добавлен в категорию переменных параметров! ! ! Пакет конечно естьраспаковывать, если вы хотите поставитьсписок или кортежКогда он передается как переменный параметр, его необходимо передавать, когда
Добавьте ** перед фактическим параметром*
Нет! Кроме того, если вы хотите упаковать параметры в кортеж,
Вы можете использовать две звездочки (**
**) Изменено ~
6) Глобальные переменные и локальные переменные
全局变量
определяется как вкрайнийДа, ты можешьДоступ внутри функции, но не изменение напрямую;局部变量
определяется ввнутри функции, пока внельзя получить доступ вне функциипараметры или переменные;
Причины, по которым локальные переменные не могут быть доступны извне: Когда Python запускает функцию, он будет использовать стек (Stack) для хранения данных. После функции все данные будут автоматически удалены.
Причина, по которой глобальные переменные нельзя изменять в функциях:
При попытке изменить значение глобальной переменной в функции Python автоматически создаст новую внутри функции.локальная переменная с тем же именемзаменять. Если вы хотите изменить его, вы можетеиспользуется внутри функции
global关键字
декорированные глобальные переменные, ноне рекомендуется, составит программу
Увеличение затрат на техническое обслуживание.
7) Внутренние функции
На самом деле этовложение функций, функция вкладывает другую функцию, нужно обратить внимание на одну вещь:Объем внутренних функцийтолько вПрямая внешняя функция внутренней функциивнутри, снаружи есть Если его нельзя вызвать, при вызове будет сообщено об ошибке.
8) Закрытие
Замыкания в Python: если во внешней функции, к переменным внешней области (неглобальным) цитировать, тогдавнутренняя функциясчитается замыканием. Простой пример выглядит следующим образом:
выходной результат:
Внутренние функции нельзя вызывать вне внешних функций, и имя метода будет указано как неопределенное.
Кроме того,внутренняя функциятакжеВнешние функции не могут быть изменены напрямуюпеременные в , сообщуUnboundLocalErrorОшибка!
То же, что и в случае изменения глобальных переменных в предыдущей функции, если вы просто хотите изменить ее
Переменные во внешних функциях могут быть косвеннымиХранение по типу контейнераили используйте
** Доступно в Python3nolocal关键字
** Изменяет измененную переменную. Примеры следующие:
выходной результат: 400
9) лямбда-выражения
В Python вы можете использовать **lambda关键字
** для создания анонимных функций,вернуть объект функции напрямую,
Не нужно заморачиваться с каким именем, сохраните шаг определения функции, тем самым упростив читабельность кода!
Пример простого лямбда-выражения размера сравнения выглядит следующим образом:
big = lambda x, y: x > y
print("第一个参数比第二个参数大:%s" % big(1, 2))
# 输出结果:第一个参数比第二个参数大:False
10) Рекурсия
На самом деле этофункция вызывает сама себя, простейший пример рекурсивного суммирования выглядит следующим образом:
def sum(n):
if n == 1:
return 1
else:
return n + sum(n - 1)
print("1到100的求和结果是: %d" % sum(100))
# 输出结果:1到100的求和结果是: 5050
8. Обработка исключений
1) Отличие синтаксических ошибок от запущенных исключений
Грамматические ошибкиЭто ошибка, которую не может передать даже компилятор, например отсутствие двоеточия после if, и он даже не может работать; Ненормальная работа — это сбой программы, вызванный проблемой бизнес-логики программы после запуска программы, напримерразделить на 0;
2) Общие исключения в Python
аномальный | Описание |
---|---|
AssertionError |
Оператор утверждения не выполнен |
AttributeError |
Попытка доступа к свойству неизвестного объекта |
IndexError |
индекс вне диапазона последовательности |
keyError |
Найти несуществующий ключ в словаре |
NameError |
Попытка доступа к несуществующей переменной |
OSError |
Исключения, созданные операционной системой, такие как FileNotFoundError |
SyntaxError |
Синтаксическая ошибка Python |
TypeError |
Недопустимая операция между разными типами |
ZeroDivisionError |
Разделить на 0 |
IOError |
Ошибка ввода/вывода |
ValueError |
ошибка типа параметра функции |
3) Перехват исключения
оператор try-кроме-иначе,оператор try-finally
# 1.最简单的,try捕获了任何异常,直接丢给except后的代码块处理:
try:
result = 1 / 0
except:
print("捕获到异常了!") # 输出:捕获到异常了!
# 2.捕获特定类型:
try:
result = 1 / 0
except ZeroDivisionError:
print("捕获到除数为零的错误") # 输出:捕获到除数为零的错误
# 3.针对不同的异常设置多个except
try:
sum = 1 + '2'
result = 1 / 0
except TypeError as reason:
print("类型出错:" + str(reason))
except ZeroDivisionError as reason:
print("除数为0:" + str(reason))
# 输出:类型出错:unsupported operand type(s) for +: 'int' and 'str'
# 4.对多个异常统一处理
try:
result = 1 / 0
sum = 1 + '2'
except (TypeError, ZeroDivisionError) as reason:
print(str(reason)) # 输出:division by zero
# 5.当没有检测到异常时才执行的代码块,可以用else
try:
result = 4 / 2
except ZeroDivisionError as reason:
print(str(reason))
else:
print("没有发生异常,输出结果:%d" % result)
# 输出:没有发生异常,输出结果:2
# 6.无论是否发生异常都会执行的一段代码块,比如io流关闭,
# 可以使用finally子句,如果发生异常先走except子句,后走finally子句。
try:
result = 4 / 2
except ZeroDivisionError as reason:
print(str(reason))
else:
print("没有发生异常,输出结果:%d" % result)
finally:
print("无论是否发生异常都会执行~")
# 输出结果:
# 没有发生异常,输出结果:2
# 无论是否发生异常都会执行~
4) бросить исключение
использовать**raise语句
Исключения могут быть вызваны напрямую, напримерподнять TypeError (объяснение исключения, необязательно) **
5) Управление контекстом - с заявлением
Когда ваш код перехвата исключений предназначен только для обеспечения уникального распределения общих ресурсов (файлов, данных и т. д.),
и отпустите его после завершения задачи, тогда вы можете использовать **with语句
** пример следующий:
try:
with open('123.txt', "w") as f:
for line in f:
print(line)
except OSError as reason:
print("发生异常:" + str(reason))
# 输出结果:发生异常:not readable
6) функция sys.exc_info
В дополнение к указанным выше методам получения информации об исключении вы также можете использоватьsys模块的exc_info()
Функция получает:
Пример выглядит следующим образом:
# 输出结果依次是:异常类,类示例,跟踪记录对象
try:
result = 1 / 0
except:
import sys
tuple_exception = sys.exc_info()
for i in tuple_exception:
print(i)
# 输出结果:
# <class 'ZeroDivisionError'>
# division by zero
# <traceback object at 0x7f3560c05808>
9. Хранилище файлов
1) функция открытия и режим открытия файла
Чтение и запись файлов в Python очень просты, **open()函数
** Можетоткрыть файл и
вернуть файловый объектИспользуйте команду справки, чтобы узнать, что у функции open есть несколько параметров:
Новичку достаточно временно разобраться в первых двух параметрах:параметр файла:имя файла, если пути нет, то будет искать в текущей папке;mode:открытый режим, существуют следующие способы открытия:
модель | эффект |
---|---|
r |
режим только для чтения включен,дефолт |
w |
режим записи включен, если файл существует, сначала удалите его, а затем создайте заново |
a |
Режим добавления включен, добавить в конец файла, seek(), указывающий на другие места, бесполезен, файл не существует, он создается автоматически |
b |
бинарный режим включен |
t |
текстовый режим включен,дефолт |
+ |
режим чтения-записи, можно использовать с другими режимами, такими как r+, w+ |
x |
Открытие с помощью этого режима бросает исключение, если файл уже существует |
U |
Универсальная новая поддержка |
2) Методы файлового объекта
функция | эффект |
---|---|
close() | Закройте файл, после закрытия файл больше не может быть прочитан или записан |
read(size=-1) | Прочитать указанное количество байт из файла, если не задано или отрицательное, прочитать все |
next() | вернуть следующую строку файла |
readline() | Прочитать всю строку, включая новую строку '\n' |
seek(offset, from) | Установите положение текущего указателя файла, начиная с (0 начальная позиция файла, 1 текущая позиция, 2 конец файла) offset байты смещения |
tell() | Возвращает текущее местоположение файла |
write(str) | записать строку в файл |
writelines(seq) | Напишите список строк последовательности. Если вы хотите перенести строку, вам нужно добавить символ новой строки в каждую строку самостоятельно. |
3) Пример использования
# 读取123.txt文件里的内容打印,同时写入到321.txt中
try:
f1 = open("321.txt", "w")
with open("123.txt", "r") as f2:
for line in f2:
print(line, end="")
f1.write(line)
except OSError as reason:
print("发生异常" + str(reason))
finally:
f1.close() # 用完要关闭文件,f2不用是因为用了with
выходной результат:
4) Общие функции файлов/каталогов в модулях ОС
Модуль os должен быть импортирован, и при его использовании необходимо добавить ссылку на модуль, например os.getcwd().
функция | эффект |
---|---|
getcwd() | Возвращает текущий рабочий каталог |
chdir(path) | Изменить текущий рабочий каталог |
listdir(path='.') | Если параметр не указан, по умолчанию перечисляются все файлы и папки в текущем каталоге, '.' текущий каталог, '..' предыдущий каталог |
mkdir(path) | Создайте папку, если она существует, будет выдано исключение FileExistsError |
mkdirs(path) | Может использоваться для создания многоуровневых каталогов. |
remove(path) | удалить указанный файл |
rmdir(path) | удалить каталог |
removedirs(path) | удалить многоуровневый каталог |
rename(old,new) | Переименовать файл или папку |
system(command) | Вызов системных гаджетов, таких как калькуляторы |
walk(top) | Пройдите все подкаталоги по пути, указанному параметром top, и вернитеТриада(путь, [включить каталог], [включить файл]) |
curdir | Текущий каталог(.) |
pardir | предыдущий раздел оглавление (..) |
sep | разделитель путей, '\' под Win, '/' под Linux |
linesep | Разделитель строки, используемый текущей платформой, '\r\n' в win, '\n' в Linux. |
name | текущая операционная система |
модуль os.path(связанный путь к файлу)
функция | эффект |
---|---|
dirname(path) | получить путь |
basename(path) | получить имя файла |
join(path1[,path2[,...]]) | Объединить путь и имя файла в полный путь |
split(path) | Разделить путь и имя файла, вернуть кортеж (f_path, f_name), если вообще используется каталог, Он также разделяет последний каталог как имя файла и не сообщает, существует ли файл или каталог. |
splitext(path) | Раздельное имя файла и расширение |
getsize(file) | Получить размер файла в байтах |
getatime(file) | получить последний файлвремя интервью, который возвращает количество секунд с плавающей запятой |
getctime(file) | получить файлвремя создания, который возвращает количество секунд с плавающей запятой |
getmtime(file) | получить файлИзменить время, который возвращает количество секунд с плавающей запятой |
exists(path) | Определить, существует ли путь (файл или каталог) |
isabs(path) | Определить, является ли это путем принятия решения |
isdir(path) | Определите, существует ли он и является ли он каталогом |
isfile(path) | Определить, существует ли он и является ли он файлом |
islink(path) | Определите, существует ли она и является ли она символической ссылкой |
ismount(path) | Определить, существует ли он и является ли он точкой монтирования |
samefile(path1,path2) | Проверьте, указывают ли два пути на один и тот же файл |
10. Классы и объекты
1) Самый простой пример
PS: в Python нет ключевого слова public или private, как в других языках.
чтобы различать публичный и частный, по умолчанию общедоступный, если вы хотитеОпределение частных свойств или функций,названиеспередидобавить два подчеркивания__
А на самом делепсевдо-частный,внутренний
используетсятехника смены имени, изменился на **_类名__私有属性/方法名
,Например
звоните нижеpeople._Person__skill**, может получить доступ к закрытым членам!
Свойства в классе являются статическими переменными.
выходной результат:
2) __init__(self)
Метод строительства
Он будет вызываться автоматически при создании экземпляра объекта.Вы можете использовать его, когда хотите передать параметры~
выходной результат:
3) Наследование
Правила следующие:
- 1. Оформление наследства:
class 子类(父类):
- 2. Подклассы могут наследовать все свойства и методы родительского класса;
- 3. Определение подкласса и родительский классСвойства и методы с одинаковыми именами автоматически переопределяются.;
- 4. При переписывании, если вы хотите вызвать одноименный метод родительского класса, вы можете использовать **
super()函数.
** вызов имени метода;
Python поддерживает множественное наследование, несколько родительских классов разделяются запятыми, подклассыМожет наследовать от нескольких родительских классов одновременно свойства и методыВ случае множественного наследования, если родительские классы имеют один и тот же метод, порядок вызова следующий: Кто первым вызывает метод в родительском классе, например класс Person(Name, Sex, Age), В трех родительских классах есть метод show, затем подкласс вызывает show() в Name! Если нет необходимости использовать множественное наследование, его следует по возможности избегать, иногда это происходит Какие-то невидимые баги.
Есть еще один, называемыйкомбинацияПроцедура состоит в том, чтобы бросить классы, которые необходимо использовать, в составной класс. Создайте экземпляр, а затем используйте, например, положите книгу, телефон, кошелек в сумку:
Выходной результат:
4) Некоторые встроенные функции, связанные с объектами
функция | эффект |
---|---|
issubclass(class, classinfo) | Если первый параметр является вторым параметромПодкласс, возвращает True, иначе возвращает False |
isinstance(object, classinfo) | Если первый параметр является вторым параметромэкземпляр объекта, возвращает True, иначе возвращает False |
hasattr(object, name) | проверить объектЕсть ли указанный атрибут, имя свойства должно быть заключено в кавычки! |
getattr(object, name, [,default]) | Возвращает указанное значение атрибута объекта.Если нет возвращаемого значения по умолчанию, если оно не установлено, будет сообщено об исключении ArttributeError. |
setattr(object, name, value) | Установить значение указанного свойства в объекте, если свойство не существует, оно будет создано и присвоено |
delattr(object, name) | Удалить значение указанного атрибута в объекте.Если он не существует, будет сообщено об исключении ArttributeError. |
property(fget,fset,fdel,doc) | Возвращает свойство, которое можно установить |
11. Модули
1) Импортируйте модуль
Сохранить как **.py суффиксВсе файлы представляют собой независимый модуль, например файлы a.py и b.py, Вы можете импортировать b в a, а затем использовать функции в b.py. правила импорта модуля4.1 Пакет руководств написан подробно, и описание здесь повторяться не будет.
2) Указать модуль
При импорте других модулей также будет выполняться код в тестовой части, что можно сделать с помощью__name__
Сообщает Python, должен ли этот модуль запускаться как программа или импортироваться в другие программы.
Значение этого свойства при запуске как программы равно__main__
, который будет выполняться только при отдельном запуске.
Например:
if __name__ == '__main__':
test()
3) Путь поиска
Импорт модулей Python будет иметь процесс поиска путей.Если эти пути поиска не найдены, будет сообщеноImportError, который можно распечатать с помощьюsys.pathВы можете увидеть эти пути поиска, такие как мой:
Если ваши модули не находятся в этих путях, будет выдано сообщение об ошибке, конечно, вы также можете пройтиsys.path.append("路径")
Добавьте путь к пути поиска!
4) Скачать и установить сторонние библиотеки
метод первый:Pycharm установить напрямую
File -> Default Settings -> Project Interpreter-> Выберите текущую версию Python Вы можете увидеть все третьи библиотеки, установленные на данный момент, нажать знак +, чтобы войти в поиск библиотек, и найти нужную на странице поиска. После библиотеки поставьте галочку и нажмите «Установить пакет», а затем нажмите «-», чтобы удалить ненужную библиотеку.
Способ второй:Установка из командной строки с помощью команды pip
pip поставляется с Python3 в каталоге установки Python.Scriptsпод папку, При победе вам необходимо настроить переменные среды для использования:
Добавьте этот путь после пути:
pip install 库名 # 安装
python3 -m pip install 库名 # 作用同上,可以区分python2和python3而已
pip install --upgrade pip # 更新pip
pip uninstall 库名 # 卸载库
pip list # 查看已安装库列表
5) Разрешить другим использовать ваш модуль
Когда вы начнете учиться ползать, компьютер будет постепенно добавлять много фотографий девушек, не спрашивайте меня, почему... Некоторые друзья попросят вас взять копию диска U. Лучше научить их ловить рыбу, чем учить их ловить рыбу. Файл Py, написанный мисс Climbing, и пусть он работает сам, не лучше~ Пусть он притворяется, что играет в Python3 Настройте переменные среды и выполните Python xxx.py непосредственно из командной строки, чтобы сообщить о поиске модуля. Нет, ваш маленький друг интересуется только мисс и сестрой, и ему нечего узнать о Пае. Интересно, вы не можете позволить ему устанавливать команды pip одну за другой, можете ли вы экспортировать зависимость? файл что-то, что делает следующее для автоматической установки модуля? Ответ определенно да:
Сначала установите волну команды pip:pipreqs:pip install pipreqs
После установки откройте терминал, перейдите к проекту, который необходимо экспортировать, и введите:
pipreqs 导出到哪个目录
экспортироватьrequirements.txtфайл, файл является вашим проектом Используется библиотека Py, которую нужно установить отдельно, отправьте этот файл своему другу и дайте ему Выполнение командной строки:
pip install -r requirements.txt
После запуска библиотека в основном установлена:
Кроме того, если вы хотите перенести все пакеты в вашей среде Python на другой компьютер можно использовать:
pip freeze > requirements.txt
Эпилог
Хм, спустя две недели я наконец-то прошел основы Python.Конечно, должны быть какие-то упущения. Я наверстаю это позже, базовые знания довольно утомительны, и я с нетерпением жду дальнейшего изучения краулера~