1. Python tili imkoniyatlari Pythonni ko`chirish


Obfussirlangan bir satrliklar yozish mumkinmi?



Yüklə 2,19 Mb.
səhifə76/78
tarix19.12.2023
ölçüsü2,19 Mb.
#152124
1   ...   70   71   72   73   74   75   76   77   78
1. Python tili imkoniyatlari Pythonni ko`chirish

Obfussirlangan bir satrliklar yozish mumkinmi?


Mumkin.

from functools import reduce

# 1000 > tub sonlar


print(list(filter(None,map(lambda y:y*reduce(lambda x,y:x*y!=0,
map(lambda x,y=y:y%x,range(2,int(pow(y,0.5)+1))),1),range(2,1000)))))

# Dastlabki 10 ta Fibonachchi sonlari


print(list(map(lambda x,f=lambda x,f:(f(x-1,f)+f(x-2,f)) if x>1 else 1:
f(x,f), range(10))))

# Mandelbrot to`plami:



Mustaqil bajarib ko`ringchi ;-)


Nima uchun -22 // 10 ning natijasi -3 ga teng?


i % j ifoda j bilan bir xil ishoraga ega bo`lganligi va mana bunday bo`lgani uchun:

i == (i // j) * j + (i % j)


Qanday qilib satrni o`zgartirish mumkin?



>>> import io
>>> s = "Hello, world"
>>> sio = io.StringIO(s)
>>> sio.getvalue()
'Hello, world'
>>> sio.seek(7)
7
>>> sio.write("there!")
6
>>> sio.getvalue()
'Hello, there!'
>>> import array
>>> a = array.array('u', s)
>>> print(a)
array('u', 'Hello, world')
>>> a[0] = 'y'
>>> print(a)
array('u', 'yello, world')
>>> a.tounicode()
'yello, world'

Hech qanday qilib, chunki satrlar o`zgarmas ob`yektlardir. Ko`pincha, shunchaki, turli qismlardan yangi satrni tayyorlash yetarli bo`ladi. Lekin, agarda, juda ham zarur bo`lsa, io.StringIO dan yoki array modulidan foydalanish mumkin bo`ladi.



Qanday qilib satrlardan funksiya/metodlarni chaqirishda foydalanish mumkin?


Bir nechta usullar mavjud:

  • Eng yaxshisi – satrga dunksiyani mos qo`yuvchi lug`atdan foydalanishdir. Uning eng afzal tomoni – satrlar funksiyalarning nomlari bilan aynan bir xil bo`lishlari shart emasligidir.


def a():
pass
def b():
pass

dispatch = {'go': a, 'stop': b} # Note lack of parens for funcs


dispatch[get_input()]()



  • getattr tarkibiy funksiyasidan foydalanish:


import foo
getattr(foo, 'bar')()




  • def myFunc():
    print("hello")

    fname = "myFunc"


    f = locals()[fname]


    f()

    f = eval(fname)


    f()


locals yoki eval lardan foydalanish (tavsiya etilmaydi)



Yüklə 2,19 Mb.

Dostları ilə paylaş:
1   ...   70   71   72   73   74   75   76   77   78




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə