Wpis z mikrobloga

Właśnie poznałem fajną konwencję, może się komuś przyda

tupla = ('wartość, którą chcemy wyciągnąć', 'wartość, którą mamy w dupie')
1. rozpakowywujemy sobie kolekcję:

var1, var2 = tupla
2. uzywamy tylko jednej zmiennej,

var1
3. "Unused variable: var2"

4. :(

5.

var1, _ = ('wartość, którą chcemy wyciągnąć', 'wartość, którą mamy w dupie')
6. brak "Unused variable"

dlaczego nie

var1 = tupla[0]
?

Bo tak jest fajniej

#python #programowanie #ciekawostkiprogramistyczne #wlasniesiedowiedzialem
  • 18
  • Odpowiedz
@pinapel:

1. Nie znam Pythona. Od czego dokładnie jest ?

Poza tym, chciałeś chyba napisać:

var1,
= tupla

2. Pytanie:

var1, , = tupla (załóżmy, że ma trzy elementy)

Da się napisać coś takiego?

3.

dlaczego nie var1 = tupla[0] ?


Bo tak jest fajniej

A wydajnościowo jak to wygląda? Bo wydaje mi się, że pobranie od razu jeden wartości jest szybsze od tego zaprezentowanego rozpakowywania.
  • Odpowiedz
@Xianxi:

1. Nie znam Pythona. Od czego dokładnie jest ?


_
jest zwyczajną zmienną

var1, , = tupla (załóżmy, że ma trzy elementy)


da się, ale to już nie jest takie ładne. ładniejsze jest za to:

foo, bar, dupa, _ = czteroelementowa_tupla
i ciężko to napisać zwięźle z wykorzystaniem pobierania po indeksach. więc tutaj bardziej się przyda ta konwekcja

A wydajnościowo jak to wygląda?


nie wiem :]
  • Odpowiedz
@pinapel: Odpowiednik Perlowego:

my ($var1, undef) = @tuple;
dlaczego nie var1 = tupla[0] ?


Bo tak jest fajniej

A raczej, bo niektórzy twierdzą, że czytelniej jest tak:

my (undef, undef, undef, undef, $uid, $gid, undef, $size, undef, $mtime ) = stat($file_path);
niż tak:

my @stat = stat($file_path);

my $uid = $stat[4];

my $gid = $stat[5];

my $size = $stat[7];

my $mtime = $stat[9];

Chociaż ja tam uważam, że najczytelniej jest
  • Odpowiedz
A wydajnościowo jak to wygląda?


@Xianxi: @pinapel: Forma

zmienna_a, zmienna_b = (1,2)
jest szybsza, szczególnie przy większej ilości zmiennych

A co do ciekawych konstrukcji z pythona, znasz to?

def foo(a, b, c):
... return a+b+c
args = {'b':1, 'a':2, 'c':3}
print foo(**args) # >> 6
  • Odpowiedz