Вот список знаний, которыми должен обладать потенциальный Junior Python developer:
Уметь самообучаться, находить нужную информацию.
Иметь общие представления о том, что такое ОС и зачем она появилась.
Понимать что такое процесс и как он “живёт” в ОС.
Понимать что такое поток.
Понимать что такое сокеты и зачем они нужны.
Иметь представление о том, как устроен стек протоколов TCP/IP.
Понимать что такое Linux.
Уметь работать в sh.
Понимать что такое виртуализация и знать какие бывают типы.
Уметь настраивать виртуальные машины через vagrant или подобные инструменты.
Уметь работать с GIT(создавать ветки, разрешать конфликты, etc)
Понимать что такое ООП, на чём он основан и почему им удобно пользоваться.
Понимать что такое императивный и декларативный стиль.
Понимать что такое MVC
Понимать что такое декоратор(стандартный вопрос на собеседовании) и зачем он нужен.
Понимать что такое замыкание.
Понимать что такое интроскпекция.
Понимать асинхронную концепцию программирования.
Уметь работать с БД(хотя бы CRUD, join)
Уметь работать с nginx(хотя бы проксирование настроить)
(можно просто написать - “прочитать Лутца”, но выделю пару вопросов)
Знать чем отличаются new style классы от old style.
Знать чем отличаются Python2 от Python3
Знать чем отличается str от unicode и почему в программе нужно работать с unicode.
Понимать алгоритм импорта модулей в Python.
Понимать что такое генераторы и итераторы.
Понимать что такое дескрипторы.
Понимать что такое GIL и зачем он нужен.
Понимать что такое WSGI и зачем он появился.
+ Уметь писать тесты, понимать зачем это нужно.
+ Практические и теоритические основы по framework.
+ выполнить норматив по ГТО
+ не пить и не курить.
Так же можешь потренироваться по заданиям Юры Юревича.
PHP изучал, уже надоел.
Request.set_proxy(host, type)
Prepare the request by connecting to a proxy server. The host and type will replace those of the instance, and the instance’s selector will be the original URL given in the constructor.
ProxyHandler Objects
ProxyHandler.protocol_open(request)
The ProxyHandler will have a method protocol_open() for every protocol which has a proxy in the proxies dictionary given in the constructor. The method will modify requests to go through the proxy, by calling request.set_proxy(), and call the next handler in the chain to actually execute the protocol.
http_proxy = "http://10.10.1.10:3128"
https_proxy = "https://10.10.1.11:1080"
ftp_proxy = "ftp://10.10.1.10:3128"
proxyDict = {
"http" : http_proxy,
"https" : https_proxy,
"ftp" : ftp_proxy
}
r = requests.get(url, headers=headers, proxies=proxyDict)
prox={"http": "http://107.170.106.64:8888"}
hnd = request.ProxyHandler(prox)
opn = request.build_opener(hnd)
request.install_opener(opn)
session.query(User).join(UserItem, Lang)
session.query(UserItem.id, UserItem.date, UserItem.item_name, Lang.desc_rus, User.email).join(User, Lang)
{{ row.ray.username }}
rows = Weather.query.outerjoin(User, Weather.ray_id==User.id).order_by(User.name.asc())
rows = Weather.query.outerjoin(User).order_by(User.name.asc())
from flask import Flask, render_template
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///tst.db'
db = SQLAlchemy(app)
import datetime
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100))
username = db.Column(db.String(120), unique=True)
password = db.Column(db.String(120))
def __init__(self, name, username, password):
self.name = name
self.username = username
self.password = password
class Weather(db.Model):
__tablename__ = 'weather'
id = db.Column(db.Integer, primary_key=True)
ray_id = db.Column(db.Integer, db.ForeignKey('users.id'))
ray = db.relationship('User', backref=db.backref('weather_current', uselist=False))
putdate = db.Column(db.DateTime)
sost = db.Column(db.String(250))
temp = db.Column(db.String(150))
def __init__(self, ray_id, putdate, sost, temp):
self.ray_id = ray_id
self.putdate = putdate
self.sost = sost
self.temp = temp
db.drop_all()
db.create_all()
u = User("usertest2", 'testuser2', '123')
db.session.add(u)
db.session.commit()
db.session.add(Weather(u.id, datetime.datetime.now(), 'test', '123'))
db.session.add(Weather(None, datetime.datetime.now(), 'test', '123'))
db.session.commit()
@app.route('/', methods = ['GET', 'POST'])
def weather():
rows = Weather.query.outerjoin(User).order_by(User.name.asc())
return render_template("weather.html",
rows = rows)
if __name__ == "__main__":
app.run(debug=True)
<table>
{% for row in rows %}
<tr>
<td align=left>{{ row.ray.name }}</td>
<td>{{ row.putdate }}</td>
<td>{{ row.sost }}</td>
<td>{{ row.temp }}</td>
<td>{{ row.ray.username }}</td>
</tr>
{% endfor %}
</table>