mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2025-08-18 12:31:22 +02:00
Advanced
This commit is contained in:
@@ -564,56 +564,54 @@ dir(math)
|
|||||||
|
|
||||||
|
|
||||||
####################################################
|
####################################################
|
||||||
## 7. Advanced
|
## 7. Gelişmiş
|
||||||
####################################################
|
####################################################
|
||||||
|
|
||||||
# Generators help you make lazy code
|
# Oluşturucular uzun uzun kod yazmamanızı sağlayacak ve yardımcı olacaktır
|
||||||
def double_numbers(iterable):
|
def kare_sayilar(nesne):
|
||||||
for i in iterable:
|
for i in nesne:
|
||||||
yield i + i
|
yield i + i
|
||||||
|
|
||||||
# A generator creates values on the fly.
|
# Bir oluşturucu(generator) değerleri anında oluşturur.
|
||||||
# Instead of generating and returning all values at once it creates one in each
|
# Bir seferde tüm değerleri oluşturup göndermek yerine teker teker her oluşumdan
|
||||||
# iteration. This means values bigger than 15 wont be processed in
|
# sonra geri döndürür. Bu demektir ki, kare_sayilar fonksiyonumuzda 15'ten büyük
|
||||||
# double_numbers.
|
# değerler işlenmeyecektir.
|
||||||
# Note range is a generator too. Creating a list 1-900000000 would take lot of
|
# Not: range() da bir oluşturucu(generator)dur. 1-900000000 arası bir liste yapmaya çalıştığınızda
|
||||||
# time to be made
|
# çok fazla vakit alacaktır.
|
||||||
# We use a trailing underscore in variable names when we want to use a name that
|
# Python tarafından belirlenen anahtar kelimelerden kaçınmak için basitçe alt çizgi(_) kullanılabilir.
|
||||||
# would normally collide with a python keyword
|
|
||||||
range_ = range(1, 900000000)
|
range_ = range(1, 900000000)
|
||||||
# will double all numbers until a result >=30 found
|
# kare_sayilar'dan dönen değer 30'a ulaştığında durduralım
|
||||||
for i in double_numbers(range_):
|
for i in kare_sayilar(range_):
|
||||||
print(i)
|
print(i)
|
||||||
if i >= 30:
|
if i >= 30:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
# Decorators
|
# Dekoratörler
|
||||||
# in this example beg wraps say
|
# Bu örnekte,
|
||||||
# Beg will call say. If say_please is True then it will change the returned
|
# Eğer lutfen_soyle True ise dönen değer değişecektir.
|
||||||
# message
|
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
|
||||||
|
|
||||||
def beg(target_function):
|
def yalvar(hedef_fonksiyon):
|
||||||
@wraps(target_function)
|
@wraps(hedef_fonksiyon)
|
||||||
def wrapper(*args, **kwargs):
|
def metot(*args, **kwargs):
|
||||||
msg, say_please = target_function(*args, **kwargs)
|
msj, lutfen_soyle = hedef_fonksiyon(*args, **kwargs)
|
||||||
if say_please:
|
if lutfen_soyle:
|
||||||
return "{} {}".format(msg, "Please! I am poor :(")
|
return "{} {}".format(msj, "Lütfen! Artık dayanamıyorum :(")
|
||||||
return msg
|
return msj
|
||||||
|
|
||||||
return wrapper
|
return metot
|
||||||
|
|
||||||
|
|
||||||
@beg
|
@yalvar
|
||||||
def say(say_please=False):
|
def soyle(lutfen_soyle=False):
|
||||||
msg = "Can you buy me a beer?"
|
msj = "Bana soda alır mısın?"
|
||||||
return msg, say_please
|
return msj, lutfen_soyle
|
||||||
|
|
||||||
|
|
||||||
print(say()) # Can you buy me a beer?
|
print(soyle()) # Bana soda alır mısın?
|
||||||
print(say(say_please=True)) # Can you buy me a beer? Please! I am poor :(
|
print(soyle(lutfen_soyle=True)) # Ban soda alır mısın? Lutfen! Artık dayanamıyorum :(
|
||||||
```
|
```
|
||||||
|
|
||||||
## Ready For More?
|
## Ready For More?
|
||||||
|
Reference in New Issue
Block a user