Эта статья участвует в "Месяце тем Python", подробнее см.Ссылка на мероприятие
Если вы позволите любому программисту Python рассказать о преимуществах Python, он назовет простоту и хорошую читабельность наиболее важными преимуществами. В этом руководстве по Python мы представим множество основных руководств и методов Python, эти методы и методы подтвердят два вышеуказанных пункта.
Я собирал эти полезные сочетания клавиш с тех пор, как начал использовать Python. Что может быть более полезным, чем делиться тем, что мы знаем и можем принести пользу другим?
Итак, сегодня я привожу несколько основных руководств и советов по Python. Все эти советы могут помочь вам сократить объем кода и оптимизировать выполнение. Кроме того, вы можете легко использовать их в проектах реального времени, работая над обычными задачами.
содержание
1. Поменяйте местами два числа
2. Цепочка операторов сравнения
3. Используйте Ternary Operator для условного назначения.
4. Используйте многострочные строки.
5. Сохраните элементы списка в новую переменную.
6. Распечатайте путь к файлу импортированного модуля.
7. Используйте интерактивный оператор «_».
8. Словарь/множество понимания.
9. Отладьте скрипт.
10. Настройте общий доступ к файлам.
11. Проверяйте объекты в Python.
12. Упростите оператор if.
13. Определите версию Python во время выполнения.
14. Объедините несколько строк.
15. Четыре способа инвертировать строку/список.
16. Играйте с перечислениями.
17. перечисление, используемое в Python.
18. Вернуть несколько значений из функции.
19. Используйте оператор splat для распаковки аргументов функции.
20. Используйте словарь для хранения переключателей.
21. Вычислите факториал любого числа в строке.
22. Найдите наиболее часто встречающееся значение в списке.
23. Сбросьте лимит рекурсии.
24. Проверьте использование памяти объектом.
25. Используйте слоты, чтобы уменьшить нагрузку на память.
26. Lambda имитирует функцию печати.
27. Создайте словарь из двух связанных последовательностей.
28. Несколько префиксов в строке онлайн-поиска.
29. Сформируйте единый список без использования циклов.
30. Реализуйте настоящий оператор switch-case в Python.
Резюме - Советы на Python и Tricks
Совет 1 Поменяйте местами два числа
Python предоставляет интуитивно понятный способ выполнения присваиваний и перестановок в одной строке. См. приведенный ниже пример.
x, y = 10, 20
print(x, y)
x, y = y, x
print(x, y)
#1 (10, 20)
#2 (20, 10)
Присвоение справа создает новый кортеж. в то время как левый немедленно распаковывает этот (без кавычек) кортеж, чтобы назвать<a>
и<b>
.
После завершения выделения новый кортеж будет разыменован и помечен для сборки мусора. Замена переменных также происходит в конце.
Совет 2 Цепочка операторов сравнения.
Агрегация операторов сравнения — еще один трюк, который иногда может пригодиться.
n = 10
result = 1 < n < 20
print(result)
# True
result = 1 > n <= 9
print(result)
# False
Совет 3. Используйте тернарный оператор для условного присваивания.
Тернарный оператор — это сокращение для оператора if-else, также известного как условный оператор.
[on_true] if [expression] else [on_false]
Вот несколько примеров, которые вы можете использовать, чтобы ваш код был компактным и лаконичным.
Следующий оператор делает то же самое, что и он, а именно: «если у равно 9, присвоить х 10, иначе присвоить х 20». При необходимости мы можем расширить цепочку операторов.
x = 10 if (y == 9) else 20
Точно так же мы можем сделать то же самое с объектами класса.
x = (classA if y == 1 else classB)(param1, param2)
В приведенном выше примере classA и classB — это два класса, в которых будет вызываться один из конструкторов класса.
Ниже пример без него. Добавьте условие, которое оценивает наименьшее число.
def small(a, b, c):
return a if a <= b and a <= c else (b if b <= a and b <= c else c)
print(small(1, 0, 1))
print(small(1, 2, 2))
print(small(2, 2, 3))
print(small(5, 4, 3))
#Output
#0 #1 #2 #3
Мы даже можем использовать тернарный оператор в списках.
[m**2 if m > 10 else m**4 for m in range(50)]
#=> [0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401]
Совет 4 многострочные строки
Основной подход заключается в использовании обратной косой черты, заимствованной из языка C.
multiStr = "select * from multi_row \
where row_id < 5"
print(multiStr)
# select * from multi_row where row_id < 5
Еще один трюк — использовать тройные кавычки.
multiStr = """select * from multi_row
where row_id < 5"""
print(multiStr)
#select * from multi_row
#where row_id < 5
Распространенной проблемой вышеперечисленных методов является отсутствие надлежащего отступа. Если мы попытаемся сделать отступ, он вставит пробелы в строку.
Таким образом, окончательным решением было разбить строку на несколько строк и заключить всю строку в круглые скобки.
multiStr= ("select * from multi_row "
"where row_id < 5 "
"order by age")
print(multiStr)
#select * from multi_row where row_id < 5 order by age
Совет 5 Store Список элементов в новые переменные
我们可以使用一个列表来初始化一个 no。 Переменные.在解压列表时,变量的数量不应超过编号。列表中的元素。
testList = [1,2,3]
x, y, z = testList
print(x, y, z)
#-> 1 2 3
Совет 6. Распечатайте путь к файлу импортированного модуля
Если вы хотите узнать абсолютное расположение импортированных модулей в вашем коде, используйте следующий прием.
import threading
import socket
print(threading)
print(socket)
#1- <module 'threading' from '/usr/lib/python2.7/threading.py'>
#2- <module 'socket' from '/usr/lib/python2.7/socket.py'>
Совет 7. Используйте интерактивный оператор «_»
Это полезная функция, о которой многие из нас не знают.
В консоли Python всякий раз, когда мы проверяем выражение или вызываем функцию, результат отправляется во временное имя _ (подчеркивание).
>>> 2 + 1
3
>>> _
3
>>> print _
3
«_» относится к выводу последнего выполненного выражения.
Совет 8. Понимание словаря/набора
Точно так же, как мы используем списки, мы также можем использовать словари/наборы. Они просты в использовании и одинаково эффективны. Вот пример.
testDict = {i: i * i for i in xrange(10)}
testSet = {i * 2 for i in xrange(10)}
print(testSet)
print(testDict)
#set([0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
#{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
Примечание. Разница только в двух операторах <:>. Кроме того, в приведенном выше коде для запуска в Python3 замените.
Совет 9. Сценарии отладки
Мы можем установить точки останова в сценариях Python с помощью модуля. Следуйте приведенному ниже примеру.
import pdb
pdb.set_trace()
Мы можем указать
Совет 10. Настройте общий доступ к файлам
Python позволяет вам запускать HTTP-сервер, вы можете использовать его из файла общего доступа к корневому каталогу сервера. Вот команда для запуска сервера.
Python 2
python -m SimpleHTTPServer
Python 3
python3 -m http.server
Приведенная выше команда запустит сервер на порту 8000 по умолчанию. Вы также можете использовать пользовательский порт, передав его в качестве последнего параметра вышеуказанной команде.
Совет 11. Проверяйте объекты в Python
Мы можем проверять объекты в Python, вызывая метод dir(). Вот простой пример.
test = [1, 3, 5, 7]
print( dir(test) )
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
Совет 12. Упростите оператор if
Чтобы проверить несколько значений, мы можем сделать это следующим образом.
if m in [1,3,5,7]:
заменять:
if m==1 or m==3 or m==5 or m==7:
В качестве альтернативы мы могли бы использовать «{1,3,5,7}» вместо «[1,3,5,7]» в качестве оператора «in», поскольку «set» может получить доступ к каждому элементу в O(1) .
Совет 13. Определяйте версию Python во время выполнения
Иногда мы можем не захотеть выполнять нашу программу, если текущий работающий движок Python ниже поддерживаемой версии. Для этого вы можете использовать следующий фрагмент кода. Он также печатает текущую версию Python в удобочитаемом формате.
import sys
#Detect the Python version currently in use.
if not hasattr(sys, "hexversion") or sys.hexversion != 50660080:
print("Sorry, you aren't running on Python 3.5\n")
print("Please upgrade to 3.5.\n")
sys.exit(1)
#Print Python version in a readable format.
print("Current Python version: ", sys.version)
В качестве альтернативы вы можете заменить sys.hexversion != 50660080 на sys.version_info >= (3, 5) в приведенном выше коде. Это совет информированного читателя.
Вывод при работе на Python 2.7.
Python 2.7.10 (default, Jul 14 2015, 19:46:27)
[GCC 4.8.2] on linux
Sorry, you aren't running on Python 3.5
Please upgrade to 3.5.
Вывод работает на Python 3.5 at.
Python 3.5.1 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
Current Python version: 3.5.2 (default, Aug 22 2016, 21:11:05)
[GCC 5.3.0]
Уловка 14. Объединение нескольких строк
См. пример ниже, если вы хотите объединить все теги, доступные в списке.
>>> test = ['I', 'Like', 'Python', 'automation']
Теперь давайте создадим строку из элементов в списке, приведенном выше.
>>> print ''.join(test)
Совет 15. Четыре способа инвертировать строку/список
Перевернуть сам список
testList = [1, 3, 5]
testList.reverse()
print(testList)
#-> [5, 3, 1]
Обратная итерация в цикле
for element in reversed([1,3,5]): print(element)
#1-> 5
#2-> 3
#3-> 1
перевернуть строку
"Test Python"[::-1]
Это делает вывод "нохтыП цеТ"
Перевернуть список с помощью срезов
[1, 3, 5][::-1]
Приведенная выше команда выведет [5, 3, 1].
Совет 16. Играйте с перечислением
Используя перечислитель, легко найти индекс в цикле.
testlist = [10, 20, 30]
for i, value in enumerate(testlist):
print(i, ': ', value)
#1-> 0 : 10
#2-> 1 : 20
#3-> 2 : 30
Совет 17. Использование перечислений в Python.
Мы можем использовать следующие методы для создания определений перечисления.
class Shapes:
Circle, Square, Triangle, Quadrangle = range(4)
print(Shapes.Circle)
print(Shapes.Square)
print(Shapes.Triangle)
print(Shapes.Quadrangle)
#1-> 0
#2-> 1
#3-> 2
#4-> 3
Совет 18. Возвращайте несколько значений из функции.
Не многие языки программирования поддерживают эту функцию. Однако функции в Python возвращают несколько значений.
Пожалуйста, обратитесь к следующему примеру, чтобы увидеть его в действии.
# function returning multiple values.
def x():
return 1, 2, 3, 4
# Calling the above function.
a, b, c, d = x()
print(a, b, c, d)
#-> 1 2 3 4
Совет 19. Распакуйте аргументы функции с помощью оператора splat.
Оператор splat предоставляет способ извлечения списка художественных параметров. Для ясности, пожалуйста, обратитесь к следующим примерам.
def test(x, y, z):
print(x, y, z)
testDict = {'x': 1, 'y': 2, 'z': 3}
testList = [10, 20, 30]
test(*testDict)
test(**testDict)
test(*testList)
#1-> x y z
#2-> 1 2 3
#3-> 10 20 30
Совет 20. Используйте словарь для хранения переключателей.
Мы можем сделать словарь для хранения выражений.
stdcalc = {
'sum': lambda x, y: x + y,
'subtract': lambda x, y: x - y
}
print(stdcalc['sum'](9,3))
print(stdcalc['subtract'](9,3))
#1-> 12
#2-> 6
Навык 21 вычисляет шаги любого количества чисел в строке.
Python 2.x.
result = (lambda k: reduce(int.__mul__, range(1,k+1),1))(3)
print(result)
#-> 6
Python 3.x.
import functools
result = (lambda k: functools.reduce(int.__mul__, range(1,k+1),1))(3)
print(result)
22 советы, чтобы найти наибольшее значение частоты, появляются в списке.
test = [1,2,3,4,2,2,3,1,4,4,4]
print(max(set(test), key=test.count))
#-> 4
Совет 23. Сбросьте ограничение рекурсии.
Python ограничивает рекурсию до 1000. Мы можем сбросить его значение.
import sys
x=1001
print(sys.getrecursionlimit())
sys.setrecursionlimit(x)
print(sys.getrecursionlimit())
#1-> 1000
#2-> 1001
Пожалуйста, применяйте приведенные выше советы только в случае необходимости.
Совет 24. Проверьте использование памяти объектами.
В Python 2.7 32-битные целые числа занимают 24 байта, тогда как в Python 3.5 используются 28 байтов. Чтобы проверить использование памяти, мы можем вызвать метод.
Python 2.7.
import sys
x=1
print(sys.getsizeof(x))
#-> 24
Python 3.5.
import sys
x=1
print(sys.getsizeof(x))
#-> 28
Совет 25. Используйте __slots__, чтобы уменьшить нагрузку на память.
Замечали ли вы, что ваше приложение Python потребляет много ресурсов, особенно памяти? Это использует<__slots__>
Переменные класса — это уловка, позволяющая в определенной степени уменьшить накладные расходы памяти.
import sys
class FileSystem(object):
def __init__(self, files, folders, devices):
self.files = files
self.folders = folders
self.devices = devices
print(sys.getsizeof( FileSystem ))
class FileSystem1(object):
__slots__ = ['files', 'folders', 'devices']
def __init__(self, files, folders, devices):
self.files = files
self.folders = folders
self.devices = devices
print(sys.getsizeof( FileSystem1 ))
#In Python 3.5
#1-> 1016
#2-> 888
Очевидно, из результатов видно, что использование памяти было сохранено. Но когда класс требует слишком больших накладных расходов на память, вы должны использовать__slots__
. Делайте это только после анализа заявки. В противном случае вы затрудните изменение кода и не получите реальной пользы.
Совет 26. Lambda имитирует функцию печати.
import sys
lprint=lambda *args:sys.stdout.write(" ".join(map(str,args)))
lprint("python", "tips",1000,1001)
#-> python tips 1000 1001
Совет 27. Создайте словарь из двух связанных последовательностей.
t1 = (1, 2, 3)
t2 = (10, 20, 30)
print(dict (zip(t1,t2)))
#-> {1: 10, 2: 20, 3: 30}
Совет 28. Найдите в Интернете несколько префиксов в строке.
print("http://www.baidu.com".startswith(("http://", "https://")))
print("https://juejin.cn".endswith((".com", ".cn")))
#1-> True
#2-> True
Совет 29. Сформируйте единый список без использования циклов.
import itertools
test = [[-1, -2], [30, 40], [25, 35]]
print(list(itertools.chain.from_iterable(test)))
#-> [-1, -2, 30, 40, 25, 35]
Если у вас есть входной список, содержащий вложенные списки или кортежи в качестве элементов, используйте следующий прием. Однако ограничение здесь заключается в том, что он использует цикл for.
def unifylist(l_input, l_target):
for it in l_input:
if isinstance(it, list):
unifylist(it, l_target)
elif isinstance(it, tuple):
unifylist(list(it), l_target)
else:
l_target.append(it)
return l_target
test = [[-1, -2], [1,2,3, [4,(5,[6,7])]], (30, 40), [25, 35]]
print(unifylist(test,[]))
#Output => [-1, -2, 1, 2, 3, 4, 5, 6, 7, 30, 40, 25, 35]
Еще один более простой способ унифицировать списки, содержащие списки и кортежи, — использовать пакет Python
import more_itertools
test = [[-1, -2], [1, 2, 3, [4, (5, [6, 7])]], (30, 40), [25, 35]]
print(list(more_itertools.collapse(test)))
#Output=> [-1, -2, 1, 2, 3, 4, 5, 6, 7, 30, 40, 25, 35]
Совет 30. Реализуйте настоящий оператор switch-case в Python.
Вот код, который использует словарь для имитации конструкций switch-case.
def xswitch(x):
return xswitch._system_dict.get(x, None)
xswitch._system_dict = {'files': 10, 'folders': 5, 'devices': 2}
print(xswitch('default'))
print(xswitch('devices'))
#1-> None
#2-> 2
Резюме - Советы на Python и Tricks
Мы надеемся, что основные советы и приемы Python, приведенные выше, помогут вам сделать все быстро и эффективно. Вы можете использовать их для своих заданий и проектов.
Я давно веду блог о технологиях, и это учебник по моим навыкам. Надеюсь, вам это понравится! Вот краткое изложение всех моих оригинальных и исходных кодов работ:
Если вы действительно узнали что-то новое из этой статьи, ставьте лайк, добавляйте в закладки и делитесь с друзьями. 🤗Наконец, не забудьте поддержать ❤ или 📑