Продвинутые советы по Python, о которых следует помнить.
СОВЕТ 1
Если вы хотите напечатать несколько значений с заданным пользователем разделителем, используйте параметр sep.
str1 = 'username' str2 = 'yourwebsite.com' print(str1, str2, sep = '@') # Output: [email protected]
СОВЕТ 2
Для символа новой строки функция печати Python по умолчанию имеет в конце символ \n. Однако иногда вы можете захотеть использовать другой символ в конце функции печати. Параметр end=работает отлично.
print("Dennis" , end =", " ) print("Yancy", end = ' ') print("Jr", end = '.') # Output: Dennis, Yancy Jr.
СОВЕТ 3
Если вы хотите напечатать несколько строк, используйте 3 кавычки (работают как одинарные, так и двойные кавычки).
strng = '''Have a nice day. It is cold outside. Put on a warm coat.''' print(strng)
СОВЕТ 4
Понимание списков — это круто, и на самом деле они работают быстрее, если вы обрабатываете несколько элементов. Кроме того, понимание списков является pythonic.
Вот логика понимания списка:
myList = [returned_value for item in list condition_logic ]
Вот более сложный пример.
# Create a list of numbers from 0 - 99 numbers = range(0, 100) # Square all number between 0 and 99 inclusive squares = [num * num for num in numbers]
СОВЕТ 5
Распаковка списка. Предположим, вы хотите назначить один или несколько элементов специально для списка, а остальные элементы — для другого списка.
a = [1, 2, 3, 4, 5] d, *f = a print(d) # 1 print(f) # [2, 3, 4, 5]
Or
mylist = ["yellow", "gray", "blue", "pink", "brown"] a, *b, c = mylist print(a) # yellow print(b) # ['gray', 'blue', 'oink'] print(c) # brown
СОВЕТ 6
В структуре данных словаря Python по умолчанию нет порядка индексов. Думайте о парах ключ-значение как о мешке беспорядочных товаров. Это делает работу со словарями невероятно эффективной. Однако бывают случаи, когда вам просто нужно заказать словарь.
Не волнуйтесь, OrderedDict — это модуль в библиотеке коллекций Python, который делает именно это.
import collections d = collections.OrderedDict() d[0] = 0 d[1] = 100 d[2] = 200 print(d) # OrderedDict([(0, 0), (1, 100), (2, 200)])
СОВЕТ 7
Если вам нужны многочисленные максимальные или минимальные значения из набора переменных, функции max и min могут оказаться недостаточными.
Обратите внимание на библиотеку heapq, которая значительно упрощает получение n наибольших или n наименьших значений по сравнению с традиционными методами.
import heapq grades = [1.5, 78, 6, 130, 91, 1005.2, 1741, 1.9, 112, 809.5] print(heapq.nlargest(2, grades)) # [1741, 1005.2] print(heapq.nsmallest(5, grades)) # [1.5, 1.9, 6, 78, 91]
СОВЕТ 8
Тернарный оператор должен сократить оператор if до одной строки.
a= 100 c = True if a**2 > 10000 else False print(c) # False
СОВЕТ 9
Иногда необходимо добавить счетчик в цикл. Существует функция перечисления, которая легко позволяет это сделать.
fruits = ['apples', 'peaches', 'dragon fruit', 'guava'] for f, fruit in enumerate(fruits): if f < 3: print([f, fruit]) # [0, 'apples'] # [1, 'peaches'] # [2, 'dragon fruit']
СОВЕТ 9
Иногда при написании кода вам нужно настроить диапазоны дат. С python вы можете легко добавлять или вычитать дни или недели.
today = datetime.date.today() twoWeeksAgo = today + datetime.timedelta(days=-today.weekday(), weeks=-2) thirteenDaysLater = twoWeeksAgo + timedelta(days = 13) print('Today is', today) print('Two Weeks Ago', twoWeeksAgo) print('Thirteen days after 2 weeks ago', thirteenDaysLater) # Today is 2022-01-26 # Two Weeks Ago 2022-01-10 # Thirteen days after 2 weeks ago 2022-01-23
СОВЕТ 10
Оператор yield принадлежит к тому же семейству, что и оператор return. Разница в том, что хотя оператор return возвращает значение и функция завершается, оператор yield может возвращать последовательность значений, то есть имя.
def f1(a): yield a yield a**2 yield a**3 print (f1(15)) for i in f1(15): print (i) # Output # <generator object f1 at 0x0000014F81BB2740> # 15 # 225 # 3375
Бонус
Если вы очищаете веб-страницу с фреймами, вам может потребоваться переключить веб-фреймы, чтобы заставить ее работать. Это работает, когда вы чистите с помощью селена.
driver = webdriver.Firefox() #('geckodriver.exe') driver.implicitly_wait(1) NY = 'https://appext20.dos.ny.gov/pls/ucc_public/web_search.main_frame' driver.get(NY) # select search by date iframe = driver.find_element(By.XPATH, '/html/frameset/frame[1]') driver.switch_to.frame(iframe) driver.find_element(By.XPATH, '/html/body/center[2]/a[3]').click() driver.switch_to.default_content() iframe = driver.find_element(By.XPATH, '/html/frameset/frame[2]') driver.switch_to.frame(iframe)
И вот оно. Спасибо за чтение.
Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.