Answer

Answer

t.me/python_tesst

Ответ:

admin

test

Объяснение:

Здесь мы импортировали модуль Python argparse совместно с модулем os. Мы также импортировали ChainMap.Next, простую функцию со слегка нелепыми настройками. Я видел, что эти настройки используются в некоторых популярных роутерах. Далее, мы устанавливаем наш парсер аргументов, и указываем ему, как именно он будет обрабатывать определенные параметры командной строки. Обратите внимание на то, что argparse не предоставляет способ получения объектов словаря или его аргументов, так что мы используем dict для извлечения того, что нам нужно. Здесь мы задействуем встроенный инструмент Python vars. Если вы вызовете его без аргументов, то vars будет вести себя как встроенный locals. Но если передать его объекту, то vars будет выступать в роли эквивалента свойству объекта __dict__. Другими словами, vars(args) равен args.__dict__. В конце мы создаем наш ChainMap, передав аргументы нашей командной строке (если таковые имеются), затем переменные среды и, наконец, настройки. В конце кода, мы пытаемся вызвать нашу функцию, затем устанавливаем переменные среды и снова делаем вызов. Запустите его и увидите, что в выдаче будет admin, и, как и ожидалось, test.

Код:

import argparse
import os
 
from collections import ChainMap
 
 
def main():
  app_defaults = {'username':'admin', 'password':'admin'}
 
  parser = argparse.ArgumentParser()
  parser.add_argument('-u', '--username')
  parser.add_argument('-p', '--password')
  args = parser.parse_args()
   
  command_line_arguments = {
    key:value for key, value in vars(args).items() if value
  }
   
  chain = ChainMap(
        command_line_arguments,
        os.environ,
        app_defaults
      )
   
  print(chain['username'])
 
 
if __name__ == '__main__':
  main()
  os.environ['username'] = 'test'
  main()

Report Page