def func(arr=[]):
# если изменить arr, когда функция была вызвана без параметров,
# то значение по умолчанию поменяется для последующих вызовов
def func2(arr=None):
arr = arr || []
# а вот тут значение по умолчанию immutable и поэтому все ок
lambda x: x*2
// пример из мануала к node.js
var net = require('net');
net.createServer(function (socket) {
socket.setEncoding("utf8");
socket.write("Echo server\r\n");
socket.on("data", function (data) {
socket.write(data);
});
socket.on("end", function () {
socket.end();
});
}).listen(8124, "127.0.0.1");
# гипотетическое переложение предыдущего примера на python
import net
def server(socket):
socket.set_encoding("utf8")
socket.write("Echo server\r\n")
# мы не можем создавать обработчики прямо в параметрах add_callback, как было в js
def on_data(data):
socket.write(data)
def on_end():
socket.end()
socket.add_callback("data", on_data)
socket.add_callback("end", on_end)
net.create_server(server).listen(8124, "127.0.0.1");
@socket.callback("data")
def on_data(data)
socket.write(data)