Есть ли какой-нибудь способ сделать этот код более компактным?

#python #python-3.x #dry

#python #python-3.x #сухой

Вопрос:

Я разрабатываю API на Python для сбора информации, чтобы позже использовать ее в обучающей машине. Я уже создал «черновик» кода, но есть ли какой-нибудь эффективный способ сделать этот код максимально компактным?

 import requests

api_dir = 'https://fortnite-public-api.theapinetwork.com/prod09/users/id?username='

tuid = input('To see stats enter an user :')

dir1 = api_dir   tuid

data_id = requests.get(dir1).json()

data_arreg = data_id['uid']

api2_dir = 'https://fortnite-public-api.theapinetwork.com/prod09/users/public/br_stats_v2?user_id='

dir2 = api2_dir   data_arreg

data_stats = requests.get(dir2).json()

statskills = data_stats['overallData']['defaultModes']['kills']

statsmatch = data_stats['overallData']['defaultModes']['matchesplayed']

print('Number of total kills is {}.'.format(statskills))

print('Has a total of {} matches played.'.format(statsmatch))
  

Я разрабатываю этот код, как способ изучить API и использовать содержащуюся в них информацию. (вот почему я использовал fortnite API, поскольку он похож на личный проект, который я хочу разработать позже)

Комментарии:

1. Это лучше подходит для codereview.stackexchange.com

2. @JonathonReinhart Спасибо, не знал о stackexchange.

Ответ №1:

Похоже, вы на самом деле не повторяетесь. Вы можете использовать форматирование строк, чтобы сократить свой код, вынимая переменные и вводя их напрямую, хотя:

 import requests

tuid = input('To see stats enter an user :')

data_id = requests.get('https://fortnite-public-api.theapinetwork.com/prod09/users/id?username={}'.format(tuid)).json()

data_stats = requests.get('https://fortnite-public-api.theapinetwork.com/prod09/users/public/br_stats_v2?user_id={}'.format(data_id['uid'])).json()

print('Number of total kills is {}.nHas a total of {} matches played.'.format(data_stats['overallData']['defaultModes']['kills'], data_stats['overallData']['defaultModes']['matchesplayed']))
  

Хотя это делает каждую строку немного длиннее…