Вопросы к кандидатам Python developer

immutable обьекты – отличия, какие бывают?

Что будет результатом u’sdf’ == ‘sdf’ ?

Специфика сигнаруры

def f1(*args, **kwargs)

pass

что может быть ключом словаря?

Какие отличия range от xrange?

Зачем нужны анонимные функции (lambda)?

Декораторы, зачем нужны?

Какая сложнось пузырьковой сортировки?

что будет результатом?

def f1(a1=[]):

a1.append(1)

print(a1)

f1()

f1()

хорошо ли паралелится задача скрапинга по списку урлов?

В чем отличие?

for a in (o1,o2,o3):

for a in [o1,o2,o3]:

Зачем нужен оператор yield?

Чтобудет результатом выполнения кода?

class A:

v1 = 1

v2 = ‘sdf’

def __init__(self):

v1 = 3.14

v3 = ‘asdf’

a = A()

print(a.v1)

print(a.v2)

print(a.v3)

Рефлексия:

Написать подсчет площади квадрата и круга используя рефлексию.

ubuntu, django, gunicorn, nginx

sudo apt-get install nginx python-pip libpq-dev supervisor

 

export LC_ALL=C

 

sudo pip install django gunicorn psycopg2

Open:

sudo nano /etc/nginx/sites-available/default

Paste:

server {
listen 80;
server_name 192.168.23.109;
access_log /var/log/nginx/access.log;

location /static/ {
alias /home/django/web/static;
}

location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

 

For test guincorn:

gunicorn sg_web.wsgi:application

for re-test:

killall gunicorn

 

For autostart after reboot, open:

nano /etc/supervisor/conf.d/sg_web.conf

Paste:

[program:sg_web]

command=gunicorn sg_web.wsgi:application -c /home/django/sg_web/sg_web/gunicorn.conf.py

directory=/home/djangp/sg_web

user=nobody

autorestart=true

redirect_stderr=true

 

sudo systemctl enable supervisor

 

vk_api + anti-captcha

Install python libraries:

pip install antigate

pip install grab pycurl

pip install requests

init:

vk_session = vk_api.VkApi(phone, password), captcha_handler=captcha_handler)

def captcha_handler(captcha):
    urllib.urlretrieve(str(captcha.get_url()), "captcha.jpg")
    gate = AntiGate(ANTI_CAPTCHA_API_KEY)
    captcha_id = gate.send('captcha.jpg')
    key = gate.get(captcha_id)
    return captcha.try_again(key)

python simple send mail

def send_mail(_from, to, subject, message,
              login, password,
              smtpserver='smtp.gmail.com:587'):
    header = 'From: %s\n' % _from
    header += 'To: %s\n' % ','.join(to)
    header += 'Subject: %s\n\n' % subject
    message = header + message

    server = smtplib.SMTP(smtpserver)
    server.starttls()
    server.login(login,password)
    problems = server.sendmail(_from, to, message)
    server.quit()

send mail in django

put this into settings.py

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = '*****@gmail.com'
EMAIL_HOST_PASSWORD = '*********'
EMAIL_PORT = 587

usage(in view):
from django.core.mail import EmailMessage


email = EmailMessage(subject, body, to=[recipient])
email.send()