Извините, я знаю, что это могут быть странные вопросы, но я сделал эту базовую программу JavaScript, и я не совсем уверен, что мне следует искать, чтобы узнать, как перевести ее в программу Python с той же функциональностью. Я знаю, как работает код, но я не знаю, что это за технический термин, поэтому я изо всех сил пытаюсь понять, как это сделать в python. Любая помощь будет принята с благодарностью. Спасибо!
var myArray = [];
var myCache = {
add: function a(x){
myArray.shift();
myArray.push(x);
},
access: function b(z){
var zLocation = myArray.indexOf(z);
var temp1 = myArray.slice(0,zLocation);
var temp2 = myArray.slice(zLocation+1, myArray.length);
temp1 = temp1.concat(temp2);
temp1.push(z);
myArray = temp1;
},
print: function c(){
console.info("Current array is: " + myArray);
},
size: function d(y){
yArray.length = y;
}
};
myCache.add(7);
Я не знаю, как добавить функции добавления, доступа, печати и размера к тому, что я создаю на Python. Спасибо!
Этот код javascript содержит объект myCache с функциями в качестве значений. Вы можете создать класс в python с методами, которые делают это. Почитайте про классы и методы и должно стать понятно как это сделать.
что ты уже испробовал?
Я пока мало что пробовал, потому что я относительно новичок в Python, но я попробую то, что предложил JacoblRR.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Просто используйте Js2PY. Он написан на Python, поэтому, конечно, у вас должен быть Python, но в остальном это хорошо. Если вы хотите пройти долгий путь, изучите Python, что было бы лучше, потому что, когда у вас есть код на Python, вы знаете, как его изменить.
Да, я определенно думаю, что попробую Js2Py. Спасибо!
Просто имейте в виду, что вывод, созданный Js2PY, не очень читабелен, поэтому, если вы действительно планируете перенести свою кодовую базу JS на python, я бы рекомендовал переписать ее «правильно» (например, вручную), если вам просто нужно «транспилировать» ее и вы будете продолжать развиваться в JS, Js2PY подойдет!
Поскольку python является объектно-ориентированным языком, способ получения объекта заключается в основном в создании класса, который действует как план/прототип для различных экземпляров этого объекта. Таким образом, ваш код, переведенный на python, может выглядеть примерно так:
(все вы, знатоки Python, простите меня, я не =D)
class MyCache:
def __init__(self, *args, **kwargs):
# in python the most similar to a javascript array is a list
# to make it a bit more readable `myArray` is called `_cache` here
self._cache = []
def add(self, x):
# do not try to pop() from an empty list, will throw an error
if self._cache:
self._cache.pop(0)
self._cache.append(x)
def access(self, z):
# index() is a bit whimpy in python...
try:
i = self._cache.index(z);
# I think we don't need the .slice() stuff here,
# can just .pop() at the index in python
self._cache.pop(i)
self._cache.append(z)
except ValueError as err:
print(err)
def size(self, y):
# not sure what you want to do here, initialize the cache with
# an array/list of a specific length?
self._cache = [None] * y
# print is a reserved word in python...
def status(self):
print("Current array is: ")
print(self._cache)
# instantiate the class (e.g. get a cache object)
# and do some stuff with it..
cache = MyCache()
cache.add(7)
cache.status()
cache.add(10)
cache.status()
cache.add(3)
cache.status()
cache.access(3)
cache.status()
не уверен, что это на самом деле делает то, что вы ожидаете, у вас всегда будет только 1 значение в кеше, потому что метод add() всегда будет удалять его... поэтому метод access не имеет смысла. ..но, может быть, это был просто ваш упрощенный пример кода?
Да, я только разместил немного упрощенного материала. Метод add должен смещаться, поэтому, если размер равен 3, при добавлении первая вещь удаляется, а все остальное сдвигается вниз на 1, чтобы освободить место для нового добавления. То, что вы опубликовали, - это именно то, что я хотел, чтобы я мог просмотреть это и точно узнать, как делать то, что я себе представлял. Благодарю вас!
Вы можете использовать Js2Py