def add(a,b):
return a+b <-- zwraca tuple
def t(*args):
return sum(*args)
def t(**kwargs):
result = 0;
for x in kwargs: <-- zwraca słownik {'a': 1, 'b': 2}
for x in kwargs.values(): <-- działamy na wartościach
result += x
for key, val in kwargs.items() <-- kolejny sposób na iterowanie
def(a, b='a', *kwargs) <-- a argumnebnt pozycjonowany, musi być, b - może być (argumernt)
def o(*args):
args[0] <-- pierwszy podany argument
return *args <-- tuples
a,b,c = t(a=1,b=2,3); <-- przypisywanie, domyślnej wartości
a,..*rest = t(a=1,b=2,3)
class A:
pass
class B:
pass
class Test(object, A, B): <-- dziedziczenie klas w wersji 2.7
a = ( <-- długi string
'ffgfg tdddcdcc',
'sdsdsdsddsd',
'sdsdsd {a} sdsdsd'
).format(a=1)
print('a' * 8)
s = u'abc' <-- definiowanie stringa w unicode
r = r'ab\cd' == u'ab\\cd' escapuje
lambda a: a*2 <-- arrow function, domyślnie zwaraca return;
class A:
_a = None
@property <-- decorator - getter, dzięki temu a.a a nie a.a()
def a(self): <
return self._a
@a.setter
def a(self, val):
self._a = val
// dict, list - słowa kluczowe
// _nazwa_funkcji - konwencja prywatna f-cja
// ipython
// piecharm - software godny użycia
// mypy - biblioteka do typowania (tylko sprawdzanie, bez kompilowania)
// a: str
def(a:str)->str: