01. Въведение в Python

01. Въведение в Python

01. Въведение в Python

5 март 2014

Къде отива кода?

Python е предсказуем

Когато не сте сигурни, просто пробвайте.

$ python
>>> 5 + 10
15
>>> a = 5
>>> b = a + 10
>>> print(b)
15
>>> a * 2
10
>>> a ** 2
25
>>> "hello" + ', ' + "world"
"hello, world"

Първа помощ

В интерактивната конзола, help() показва документацията на всяка функция, клас или тип.

>>> help(str)
>>> help(5)
>>> help(SomeClass)
>>> help(some_function)

Един ред код

my_var = 'spam'.upper()
print(my_var) # SPAM

Типове: int

Типове: str

>>> "hello".upper()
"HELLO"
>>> len("абвгдеж")
7
>>> "hello"[1]
"e"
>>> help(str)

Типове: bool

Типове: None

Типове

>>> type(5.5)
<class 'float'>
>>> type(type)
<class 'type'>
>>> type(type(type(type)))
<class 'type'>

Имена

а = 5
type(a) # <class 'int'>
a = 'test'
type(a) # <class 'str'>

Имена в картинки

Структури от данни

Списъци

my_list = []
my_list = list()

Списъци

my_list = []
my_list.append('word')
my_list.append(5)
my_list.append(False)

my_list[1] == 5

my_other_list = ['foo', 'bar', 'quux']
len(my_other_list) # 3
del my_other_list[1]

print(my_other_list) # ['foo', 'quux']

'foo' in my_other_list # True
False in my_list # True

Речник (dict)

ages = {'Кай': 2, 'Бобо': 3}
ages['Йоан'] = 26
ages['Стефан'] = 18
ages['Кирил'] = 35
ages['Николай'] = 28

print(ages['Кирил']) # 35
'Николай' in ages # True

ages.get('Георги') # None
ages.get('Георги', 'няма такъв') # няма такъв

tuple

>>> args = (9.8, 3.14, 2.71)
>>> args[2]
2.71
>>> args[1] = 22/7
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

Структури от данни: set

>>> unique_numbers = {2, 3, 5, 6}
>>> unique_numbers
{2, 3, 5, 6}
>>> unique_numbers.add(5)
>>> unique_numbers
{2, 3, 5, 6}
>>> unique_numbers.remove(5)
>>> unique_numbers
{2, 3, 6}
>>> my_list = [5, 1, 6, 6, 2, 3, 5, 5]
>>> set(my_list)
{1, 2, 3, 5, 6}

Mutable vs immutable

a = 5
a += 2
a # 7

Mutable vs immutable (2)

a = [1, 2, 3]
a.append(4)
a # [1, 2, 3, 4]

Контролни структури

if

if a == 5:
    print("a is five")
elif a == 3 and not b == 2:
    print("a is three, b is not two")
else:
    print("a is something else")

if

Булеви тестове:

a = True
if a:
    print("a is True")

if not a:
    print("a is not True")

истина и лъжа

В контекста на булевите операции като лъжа се интерпретират следните стойности:

Всички останали стойности се интерпретират като истина.

if

тестове за принадлежност:

my_list = [1, 2, 3, 4]

if 1 in my_list:
    print('1 is in my list')

if 5 not in my_list:
    print('5 is not in my list')

Индентация

while

while a > 5:
    a -= 1
    print("a is {}".format(a))

for

primes = [3, 5, 7, 11]
for e in primes:
    print(e ** 2) # 9 25 49 121

people = {'bob': 25, 'john': 22, 'mitt': 56}
for name, age in people.items():
    print("{} is {} years old".format(name, age))
    # bob is 25 years old
    # john is 22 years old
    # ...

for като в C

for i in range(0, 20):
    print(i)
    # 0 1 2 3 4 5 6 .. 19

for i in range(0, 20, 3):
    print(i)
    # 0 3 6 9 12 15 18

Може и наобратно

for i in range(20, 0, -1):
    print(i)
    # 20 19 18 17 16 15 .. 1

for i in range(20, 0, -3):
    print(i)
    # 20 17 14 11 8 5 2

break и continue

switch/case

Няма.

Функции

def say_hello(name, from):
    return "Hello, {}! -- {}".format(name, from)

Аргументи на функции

def multiply(a, b=2):
    return a * b

multiply(5) # 10
multiply(5, 10) # 50

def is_pythagorean(a=2, b=3, c=4):
    return a * a + b * b == c * c

is_pythagorean(b=5) # a = 2, c = 4
is_pythagorean(1, c=3) # a = 1, b = 3

Променливи аргументи

def varfunc(some_arg, *args, **kwargs):
    #...

varfunc('hello', 1, 2, 3, name='Bob', age=12)
    # some_arg == 'hello'
    # args = (1, 2, 3)
    # kwargs = {'name': 'Bob', 'age': 12}

Въпроси?