пʼятниця, 1 березня 2013 р.

Вибірка з книги «A Byte of Python»

Метод Format

#!/usr/bin/python
# Filename: str_format.py

age = 26
name = 'Swaroop'

print('{0} is {1} years old'.format(name, age))
print('Why is {0} playing with that python?'.format(name))
$ python str_format.py
Swaroop is 25 years old
Why is Swaroop playing with that python?

Використання змінних і констант

# Filename : var.py

i = 5
print(i)
i = i + 1
print(i)

s = '''This is a multi-line string.
This is the second line.'''
print(s)
$ python var.py
5
6
This is a multi-line string.
This is the second line.

Вирази

#!/usr/bin/python
# Filename: expression.py

length = 5
breadth = 2

area = length * breadth
print('Area is', area)
print('Perimeter is', 2 * (length + breadth))
$ python expression.py
Area is 10
Perimeter is 14

Оператор if

Оператор if використовується для перевірки умов: «якщо» умова вірна, виконується блок виразів «if-блок», «інакше» виконується інший блок виразів «else-блок». Блок «else» не є обов'язковим.
#!/usr/bin/python
# Filename: if.py

number = 23
guess = int(input('Enter an integer : '))

if guess == number:
    print('Congratulations, you guessed it.') # New block starts here
    print('(but you do not win any prizes!)') # New block ends here
elif guess < number:
    print('No, it is a little higher than that') # Another block
    # You can do whatever you want in a block ...
else:
    print('No, it is a little lower than that')
    # you must have guess > number to reach here

print('Done')
# This last statement is always executed, after the if statement is
executed
$ python if.py
Enter an integer : 50
No, it is a little lower than that
Done
$ python if.py
Enter an integer : 22

Оператор while

Оператор while дозволяє вам багаторазово виконувати блок команд до тих пір, поки виконується умова. Оператор while — приклад того, що називають оператором циклу. Оператор while може мати необов'язковий пункт else.
#!/usr/bin/python
# Filename: while.py

number = 23
running = True

while running:
    guess = int(input('Enter an integer : '))

    if guess == number:
        print('Congratulations, you guessed it.')
        running = False # this causes the while loop to stop
    elif guess < number:
        print('No, it is a little higher than that.')
    else:
        print('No, it is a little lower than that.')
else:
    print('The while loop is over.')
    # Do anything else you want to do here

print('Done')
$ python while.py
Enter an integer : 50
No, it is a little lower than that.
Enter an integer : 22
No, it is a little higher than that.
Enter an integer : 23
Congratulations, you guessed it.
The while loop is over.
Done

Цикл for

#!/usr/bin/python
# Filename: for.py

for i in range(1, 5):
    print(i)
else:
    print('The for loop is over')
$ python for.py
1
2
3
4
The for loop is over

Оператор break

Оператор break слугує для «переривання» циклу, тобто зупинення виконання команд навіть якщо умова виконання циклу ще не прийняла значення False або послідовність елементів не закінчилася. Важливо відзначити, що якщо ви перериваєте цикл for чи while оператором break, відповідні їм блоки else виконуватиметься не будуть.
#!/usr/bin/python
# Filename: break.py

while True:
    s = (input('Enter something : '))
    if s == 'quit':
        break
    print('Length of the string is', len(s))
print('Done')
$ python break.py
Enter something : Programming is fun
Length of the string is 18
Enter something : When the work is done
Length of the string is 21
Enter something : if you wanna make your work also fun:
Length of the string is 37
Enter something :       use Python!
Length of the string is 12
Enter something : quit
Done

Оператор continue

Оператор continue використовується для вказівки, що необхідно пропустити всі команди, які залишилися в поточному блоці циклу і «продовжити» з наступної ітерації циклу.
#!/usr/bin/python
# Filename: continue.py

while True:
    s = input('Enter something : ')
    if s == 'quit':
        break
    if len(s) < 3:
        print('Too small')
        continue
    print('Input is of sufficient length')
    # Do other kinds of processing here...
$ python test.py
Enter something : a
Too small
Enter something : 12
Too small
Enter something : abc
Input is of sufficient length
Enter something : quit

Функції

Функції — це фрагменти програми, які багаторазово використовуються. Вони дозволяють вам дати ім'я певному блоку команд з тим, щоби згодом запускати цей блок, використовуючи вказане ім'я. Функції визначаються за допомогою зарезервованого слова «def». Після цього слова вказується «ім'я» функції, за яким слідує пара дужок, в яких можна вказати імена деяких змінних, і заключна двокрапка в кінці рядка.
#!/usr/bin/python
# Filename: function1.py

def sayHello():
    print('Hello World!') # block belonging to the function
# End of function

sayHello() # call the function
sayHello() # call the function again
$ python function1.py
Hello World!
Hello World!

Параметри функцій

Параметри вказуються в дужках при оголошенні функції та розділяються комами. Аналогічно ми передаємо значення, коли викликаємо функцію. Зверніть увагу на термінологію: імена, зазначені в оголошенні функції, називаються «параметрами», тоді як значення, які ви передаєте до функції при її виклику, «аргументами».
#!/usr/bin/python
# Filename: func_param.py

def printMax(a, b):
    if a > b:
        print(a, 'is maximum')
    elif a == b:
        print(a, 'is equal to', b)
    else:
        print(b, 'is maximum')

printMax(3, 4) # directly give literal values

x = 5
y = 7

printMax(x, y) # give variables as arguments
$ python func_param.py
4 is maximum
7 is maximum

Локальні змінні

Коли ви оголошуєте змінні всередині визначення функції, вони жодним чином не пов'язані з іншими змінними з таким же ім'ям поза функцією — тобто імена змінних є «локальними» в функції. Це називається «областю видимості» змінної. Область видимості всіх змінних обмежена блоком, в якому вони оголошені.
#!/usr/bin/python
# Filename: func_local.py

x = 50

def func(x):
    print('x is', x)
    x = 2
    print('Changed local x to', x)

func(x)
print('x is still', x)
$ python func_local.py
x is 50
Changed local x to 2
x is still 50

Зарезервоване слово global

Якщо ви хочете присвоїти деяке значення змінній, що визначена на вищому рівні програми, ви повинні вказати, що її ім'я не локальне, а глобальне (global).
#!/usr/bin/python
# Filename: func_global.py

x = 50

def func():
    global x
    
    print('x is', x)
    x = 2
    print('Changed global x to', x)

func()
print('Value of x is', x)
$ python func_global.py
x is 50
Changed global x to 2
Value of x is 2

Зарезервоване слово nonlocal

Ще один тип області видимості, так звана «нелокальна» (nonlocal), яка являє собою щось середнє між «глобальною» і «локальною». Нелокальні області видимості зустрічаються, коли ви визначаєте функції всередині функцій.
#!/usr/bin/python
# Filename: func_nonlocal.py

def func_outer():
    x = 2
    print('x is', x)
    
    def func_inner():
        nonlocal x
        x = 5

    func_inner()
    print('Changed local x to', x)

func_outer()
$ python func_nonlocal.py
x is 2
Changed local x to 5

Значення аргументів за замовчуванням

Для деяких функцій ви можете зробити частину параметрів «необов'язковими» і використовувати деякі задані значення за замовчуванням, якщо користувач не бажає вказувати власні значення для них. Ви можете вказати значення аргументів за замовчуванням, додавши до імені параметра у визначенні функції оператор присвоювання «=» з наступним значенням.
#!/usr/bin/python
# Filename: func_default.py

def say(message, times = 1):
    print(message * times)

say('Hello')
say('World', 5)
$ python func_default.py
Hello
WorldWorldWorldWorldWorld

Ключові аргументи

Якщо у вас є деяка функція з великим числом параметрів, і ви хочете вказувати тільки деякі з них при виклику, ви можете задавати значення цих параметрах за їхнім ім’ям — це називається «ключові параметри». У цьому випадку ми використовуємо ім'я (ключ) замість позиції (як було досі), щоб передати аргументи функції.

Є дві «переваги» такого підходу: по-перше, використання функції стає простіше, оскільки немає необхідності відстежувати порядок аргументів; по-друге, ми можемо задавати значення тільки деяким обраним аргументам, за умови, що інші параметри мають значення аргументу за замовчуванням.
#!/usr/bin/python
# Filename: func_key.py

def func(a, b=5, c=10):
    print('a is', a, 'and b is', b, 'and c is', c)

func(3, 7)
func(25, c=24)
func(c=50, a=100)
$ python func_key.py
a is 3 and b is 7 and c is 10
a is 25 and b is 5 and c is 24
a is 100 and b is 5 and c is 50

Змінне число параметрів

Вам може іноді знадобитися визначити функцію, здатну приймати будь яке число параметрів. Цього можна досягти із застосуванням зірочок.

Коли ми оголошуємо параметр із зірочкою, як наприклад, «*numbers», всі позиційні аргументи починаючи з цієї позиції і до кінця будуть зібрані в кортеж під ім'ям «numbers».

Аналогічно, коли ми оголошуємо параметри з двома зірочками, як наприклад «**keywords», всі ключові аргументи починаючи з цієї позиції і до кінця будуть зібрані в словник під ім'ям «keywords».
#!/usr/bin/python
# Filename: total.py

def total(initial=5, *numbers, **keywords):
    count = initial
    for number in numbers:
        count += number
    for key in keywords:
        count += keywords[key]
    return count

print(total(10, 1, 2, 3, vegetables=50, fruits=100))
$ python total.py
166

Тільки ключові параметри

Якщо ми хочемо зазначити, що деякі ключові параметри повинні бути доступні тільки по ключу, а не як позиційні аргументи, їх можна оголосити після параметра із зірочкою. Оголошення параметрів після параметра із зірочкою дає тільки ключові аргументи. Якщо для таких аргументів не вказано значення за замовчуванням, звернення до функції викличе помилку.
#!/usr/bin/python
# Filename: keyword_only.py

def total(initial=5, *numbers, vegetables):
    count = initial
    for number in numbers:
        count += number
    count += vegetables
    return count

print(total(10, 1, 2, 3, vegetables=50))
print(total(10, 1, 2, 3))
# Raises error because we have not supplied a default argument value
for 'vegetables'
$ python keyword_only.py
66
Traceback (most recent call last):
File "test.py", line 12, in 
print(total(10, 1, 2, 3))
TypeError: total() needs keyword-only argument vegetables

Оператор return

Оператор return використовується для повернення з функції, тобто для припинення її роботи і виходу з неї. При цьому можна також «повернути деяке значення» з функції.
#!/usr/bin/python
# Filename: func_return.py

def maximum(x, y):
    if x > y:
        return x
    else:
        return y

print(maximum(2, 3))
$ python func_return.py
3

Рядки документації

Python має особливість, так звані «рядки документації», які зазвичай позначаються скорочено «docstrings». Це дуже важливий інструмент, яким ви повинні користуватись, оскільки він допомагає краще документувати програму і полегшує її розуміння. Вражаюче, але ми можемо отримати рядок документації, наприклад, з функції, навіть під час виконання програми!
#!/usr/bin/python
# Filename: func_doc.py

def printMax(x, y):
    '''Prints the maximum of two numbers.

    The two values must be integers.'''
    x = int(x) # convert to integers, if possible
    y = int(y)

    if x > y:
        print(x, 'is maximum')
    else:
        print(y, 'is maximum')

printMax(3, 5)
print(printMax.__doc__)
$ python func_doc.py
5 is maximum
Prints the maximum of two numbers.
The two values must be integers.

Немає коментарів:

Дописати коментар