41

(10 відповідей, залишених у Статті)

P.Y. написав:

Ще одне: кожен параметр повинен мати ім'я, відмінне від імен інших параметрів — а отже, замінити два зайві параметри підкресленнями вже не вийде:

Схоже, ви статтю не читали.

На жаль, якщо аргументів більше, даний трюк не пройде. Лишатиметься, однак, варіант побавитися з *args, **kwargs, але це може заплутати код, тому для таких випадків правильніше буде зробити повноцінний рефакторинг.

42

(10 відповідей, залишених у Статті)

Eff1c написав:
P.Y. написав:

Я б переписав заголовок функції, давши невикористовуваному аргументові фіктивне значення за замовчуванням:

def foo(arg1, arg2=0):
    print(arg1)
 
>>> foo(10, 20) # так працює
10
>>> foo(10) # і так працює
10

Класно придумав *OK*
Я наврядчи б до такого додумався б.

Вчіться - це як раз приклад із корисних практик.

43

(10 відповідей, залишених у Статті)

P.Y. написав:

Я б переписав заголовок функції, давши невикористовуваному аргументові фіктивне значення за замовчуванням:

def foo(arg1, arg2=0):
    print(arg1)
 
>>> foo(10, 20) # так працює
10
>>> foo(10) # і так працює
10

Як уже я написав у попередньому пості, акцент був не на цьому.

44

(10 відповідей, залишених у Статті)

/KIT\ написав:
Bartash написав:
def foo(arg1, _):
    print(arg1)

Де ви таке знайшли?
Я завжди юзав:

def foo(arg1, arg2=None):
    print(arg1)

'
А ви кодите в якому редакторі? ;) Я ж написав, що це - симптом із пайшарму.

Знайшов я таке шляхом "а як прибрати хвилясту?", однак сама проблема має походження з цілком реального проекту.

Певне, варіант із arg2=None прокатить для виклику з прикладу, але ж акцент статті не на тому.

зайві аргументи функції, які, тим не менш, потрібно передавати, бо інакше доведеться багато де рефакторити виклики останньої.

Разом із тим, пайшармівська хвиляста лінія починає набридати з часом

З.І: можна зміксувати:

def foo(arg1, _=None):
    print(arg1)

45

(10 відповідей, залишених у Статті)

Доброго часу доби.

Будь-який проект з більш-менш довгою історією існування еволюціонує. Як результат – можуть з’явитися такі речі, як, наприклад, зайві аргументи функції, які, тим не менш, потрібно передавати, бо інакше доведеться багато де рефакторити виклики останньої.

Іншими словами,

def foo(arg1, arg2):
    print(arg1)
 
>>> foo(10, 20)
10
>>> foo(10)  # TypeError: too few arguments

Аргумент непотрібний, але його треба передавати. Разом із тим, пайшармівська хвиляста лінія починає набридати з часом, але відключати перевірку на весь проект не варто.

То що робити?

Рішення проблеми досить просте.

def foo(arg1, _):
    print(arg1)

Другий аргумент не викличе проблем в IDE на предмет ‘unused args’, оскільки назва “_” цілком валідна.

Однак жодна пігулка не буде без побічних ефектів. Стосовно змінної-підкреслювання варто відмітити наступні моменти:

  • Її часто використовують для збереження непотрібного значення (наприклад, витягти одне зі значень, повернених із функції, ігноруючи друге). У даному разі мета схожа й успішно досягається.

  • Вона у деяких проектах (зокрема, під Джангою) використовується як функція-перекладач текстових літералів. От тут треба бути обережним, бо імпорт транслітератора буде затерто в межах нашої функції. Разом із тим, можна просто по всьому проекту використати замість неї “T”, що теж практикується.

  • На жаль, якщо аргументів більше, даний трюк не пройде. Лишатиметься, однак, варіант побавитися з *args, **kwargs, але це може заплутати код, тому для таких випадків правильніше буде зробити повноцінний рефакторинг.

Загалом, проблему unused arguments можна ігнорувати, якщо виправити немає часу/можливості/етц: на швидкодію програми це мало вплине, естетикою можна знехтувати. Але з часом це місце у коді почне помітно тхнути, підвищуючи ризик появи багів, тому затягувати з фіксом не варто.

джерело

46

(39 відповідей, залишених у Python)

Fakinyan, Eff1c

Дана гілка - для питань з Пітону. Про питання стосунків - "Тема для розмов", приват або інший форум.

47

(39 відповідей, залишених у Python)

Eff1c написав:
FakiNyan написав:

я вільна людина, можу їздити по всій країні. Тільки гроші треба

Якщо тобі так хочеться - знайди мій фейсбук акк і подивись...

як ото з гаваями - клікнув на пост ping'а, але троха промахнувся :)

48

(39 відповідей, залишених у Python)

ping написав:

поміняйте розділ , плз.
або форум.

Або у приват.

49

(39 відповідей, залишених у Python)

FakiNyan написав:
Bartash написав:
FakiNyan написав:

шукайте напарника-дівку, бо потім часу на то все не буде

Гіркий досвід? ;)

нє, в мене ніякого досвіду немає

Оффтоп, але: то не є проблема кодінгу:)

50

(39 відповідей, залишених у Python)

FakiNyan написав:

шукайте напарника-дівку, бо потім часу на то все не буде

Гіркий досвід? ;)

51

(136 відповідей, залишених у Python)

Eff1c написав:
Bartash написав:

Eff1c

Яка ОС стоїть?

Тут вже обговорювалось))) - http://replace.org.ua/topic/8973/
Windows 7(32x) на даний момент. Аж до 04.02 не зможу змінити.

Скидається, що зберегли не в тому кодуванні, коли відкривали у якомусь редакторі. Такі жарти, здс, віндовий нотепад любить прокидати.

52

(29 відповідей, залишених у Інше)

Eff1c написав:
Bartash написав:
koala написав:
input() #кількість чисел нам не потрібна, але прочитати її доведеться
print(sum(int(number) for number in input().split()))

Version 2:

print(sum(map(int, input().split())))

Цікава версія, але, на мою думку, краще було б так:

print(sum(int(input().split())))

"надрукувати суму перетвореного на число списку"? :)

53

(136 відповідей, залишених у Python)

Eff1c

Яка ОС стоїть?

54

(29 відповідей, залишених у Інше)

koala написав:
input() #кількість чисел нам не потрібна, але прочитати її доведеться
print(sum(int(number) for number in input().split()))

Version 2:

print(sum(map(int, input().split())))

55

(29 відповідей, залишених у Інше)

Eff1c

Якщо ви тільки почали вивчати Пітон, то Notepad++ + інтерпретатор Пітона 3 вам з головою вистачить.

56

(11 відповідей, залишених у Бази даних)

@nazar

Я б вам порадив переїхати на кассандру, rethinkdb чи щось подібне - залежно, які обсяги даних і вимоги до програми. Тоді проблема тримати параметри вирішиться просто - буде таблиця на зразок

uid (аналог id)
date (просто дата)
params: {'A': 1, 'B': 2} (хеш-мап)

І вибірку тоді робити теж буде просто: замість відсутніх ключів параметрів ставите None/Null/Nil/etc (залежно, що треба).

P.S: у випадку з кассандрою - там є мова CQL, схожа на SQL.

57

(2 відповідей, залишених у *nix)

@Vo_Vik

Бага проявилася не одразу - до того кілька днів робило без проблем. Але проблема у дровах на клаву може дійсно бути.
Спробую погратися.

58

(2 відповідей, залишених у *nix)

Доброчасу :)

Поставив свіжий Мінт 18.3 на базі Cinnamon.
Ноут Lenovo Ideapad 710S Plus.

Софт апдейтився мінімально.

Коли роблю mute (Fn + F1), а згодом - unmute, то спершу це провокує зависання pop-up'а з показником гучності (він починає самостійно рухатися від 0 до 100% туди-сюди). Коли роблю зміну гучності (Fn+ F2/F3), глюк зникає, однак повністю перестає працювати клавіатура (окрім функціональних клавіш). Якщо після того зробити mute-unmute, то клава знову стає в роботу.

У гуглі пошук щодо проблеми з клавою після unmute видає різні статті про проблеми з PulseAudio, Alsa і т.п.

Мо, хто стрічав такий баг уже і знає пігулку? :)

59

(136 відповідей, залишених у Python)

Monolith написав:

Розумію, що не в тему. Але хочу підняти таке питання. Є люди кому заходять відступи в Пітоні? Це ж до біса не зручно! Як в Паскалі begin...end, які просто заповнюють пустий простір і роблять кашу так і тут відступи. мені особисто складніше читати пітонівський код з відступами. {} на мою думку зручніші, особливо якщо писати в сі-шному стилі...

Заходить.
Особливо при тому, що варіацій візуальних - лише одна, а не "єгипетські", "одна під одною "," таяк хочу",  "таяк хочу - 2" та ін. :)

60

(8 698 відповідей, залишених у Інше)

/KIT\ написав:
Bartash написав:

Панове, а давно у нас пропала фіча "карта форумчан"?

а шо то таке було?

У профілі була лінка на карту, де були територіально відмічені форумчани, які вказали місто. Фіча року 13-14-го.