30 руководств и советов по Python | Месяц тем Python

задняя часть Python
30 руководств и советов по Python | Месяц тем Python

Эта статья участвует в "Месяце тем 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)

#-> 6 вернуться к содержанию


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, приведенные выше, помогут вам сделать все быстро и эффективно. Вы можете использовать их для своих заданий и проектов.

Я давно веду блог о технологиях, и это учебник по моим навыкам. Надеюсь, вам это понравится! Вот краткое изложение всех моих оригинальных и исходных кодов работ:

Github,Gitee

Если вы действительно узнали что-то новое из этой статьи, ставьте лайк, добавляйте в закладки и делитесь с друзьями. 🤗Наконец, не забудьте поддержать ❤ или 📑