Почему я предлагаю Python в качестве второго языка интерфейса?

Python JavaScript
Почему я предлагаю Python в качестве второго языка интерфейса?

предисловие

«Как избавиться от дилеммы постоянного вырезания картинок?»

Это не тревожная статья, а полная искренних советов.PythonРекламный текст.

Когда дело доходит до вводных языков программирования, большинство рекомендуетPythonа такжеJavaScript.

На самом деле оба языка очень мощные во всех отношениях.

И теперь мы знаемES6Язык, много грамматики заимствованоPythonиз.

Есть поговорка, что«То, что можно реализовать с помощью js, в конце концов будет реализовано с помощью js».

Итак, здесь мы можем сказать:«Может следоватьpythonПохоже, в конечном итоге, какpython. "

1. Pythonа такжеES6грамматические различия

1. Основные типы

Стоит отметить, что хотя оба являются динамическими типами,pythonТипы не конвертируются автоматически при подключении.

// JavaScript
let coerced = 1;
let concatenated = coerced + 'string';
// Python
not_coerced = 1
concatenated = not_coerced + 'string'

Ошибка напрямую:TypeError: cannot concatenate 'str' and 'int' objects

только впередnumПреобразование в строковый тип для правильной работы

# Python
not_coerced = 1
concatenated = str(not_coerced) + 'string'

2. Functions ormethods?

существуетJavaScriptа такжеPython, структура функций и условий очень похожа. Например:

// JavaScript
function drSeuss(catInTheHat, thing1, thing2) {
  if (catInTheHat == true &&
    thing1 == true &&
    thing2 == true) {
    console.log('is cray');
  } else if (catInTheHat != true) {
    console.log('boring');
  } else {
    console.log('so boring');
  }
}
# Python
def dr_seuss(cat_in_the_hat, thing1, thing2):
  if cat_in_the_hat == True and
    thing2 == True and
    thing2 == True:
    print 'is cray'
  elif cat_in_the_hat != True:
    print 'boring'
  else:
    print 'so boring'

но вJavaScriptсередина,"methodsРазговорное определение ' относится к методам, встроенным в спецификацию языка, таким как:Function.prototype.apply().

существуетMDNИ тому, и другому есть объяснение:

В большинстве случаевFunctionsа такжеmethodsТо же самое, но с двумя основными отличиями:

  • methodsможет быть неявно передан вызывающей стороне, котораяmethodsна объекте.
  • methodsУмение работать с данными, содержащимися в классе.

Но гусь, вJavaScript, «класс» — это просто синтаксический сахар, мы сравним его позже.

3. Строки шаблона

в строке шаблона,JavaScriptбыл впередиpythonиз.

// JavaScript
let exclamation = 'Whoa!';
let sentence = `They are really similar to Python.`;
 
console.log(`Template Literals: ${exclamation} ${sentence}`);
# python
print '打印: {} {}'.format('Whoa.', 'Quite!')
# 打印: Yup. Quite!

{}выступает в качестве заполнителя. Эта грамматика неоднократно подвергалась критике, поэтому вPython3.6В версии предусмотрен другой синтаксис форматирования строк —f-strings.

Прямое сравнение:

name = "Tom"
age = 3
print(f"他叫 {name}, {age} 岁")
# "他叫Tom, 3 岁"

4. Значение параметра по умолчанию

JavaScriptИдеальное «обучение» сноваPython:

// JavaScript
function nom(food="ice cream") {
  console.log(`Time to eat ${food}`);
}
 
nom();// Time to eat ice cream
# Python
def nom(food="ice cream"):
  print 'Time to eat {}'.format(food)
 
nom() # Time to eat ice cream

5. Остальные параметры и* args

RestСинтаксис параметров позволяет нам выразить неопределенное количество параметров в виде массива и передать его в функцию.

  • существуетPython, они называются* args
  • существуетJavaScriptсередина...xxxпредставлены как остальные параметры.
// JavaScript
function joke(question, ...phrases) {
  console.log(question);
  for (let i = 0; i > phrases.length; i++) {
    console.log(phrases[i]);
  }
}

let es6Joke = "Why does JS single out one parameter?"
joke(es6Joke, "Because it doesn't", 'really like', 'all the REST of them!');
 
// Why does JS single out one parameter?
// Because it doesn't
// really like
// all the REST of them!
# Python
def pirate_joke(question, *args):
  print question
  for arg in args:
    print arg
 
python_joke = "What's a Pyrate's favorite parameter?"
 
pirate_joke(python_joke, "*args!", "*arrgs!", "*arrrgs!")
 
# What's a Pyrate's favorite parameter?
# *args!
# *arrgs!
# *arrrgs!

6. Classes:Добрый

Как мы все знаем,ES6Классы на самом деле являются синтаксическим сахаром.PythonИмеет встроенные классы для быстрого и простого объектно-ориентированного программирования.

а такжеJavaScriptНаследование цепочки прототипов является обязательным для каждого внешнего интерфейса.

// JavaScript
class Mammal {
  constructor() {
    this.neocortex = true;
  }
}
 
class Cat extends Mammal {
  constructor(name, years) {
    super();
    this.name = name;
    this.years = years;
  }
 
  eat(food) {
    console.log('nom ' + food);
  }
}
# Python
class Mammal(object):
  neo_cortex = True
 
class Cat(Mammal):
  def __init__(self, name, years):
    self.name = name
    self.years = years
 
  def eat(food):
    print 'nom %s' % (food)
 
fry_cat = Cat('Fry', 7)
fry_cat.eat('steak')

Честно говоря,Pythonнаписано изящнее. . .

7. Modules and import: модуль

ES6Язык модуля заимствован изpython, но превосходит его. Между ними есть некоторые различия:

  1. JavaScriptИмпорт статичен;Pythonявляется динамическим.
  2. JavaScriptМодули должны быть экспортированы явно. существуетPython, все модули можно импортировать.
  3. JavaScriptИмеет концепцию экспорта по умолчанию.Pythonнет.
# python
import mymodule
mymodule.myfunc()
// javascript
import * as myalias from "./mymodule";
myalias.myfunc();

1. Импорт подмодулей

существуетjavascript, мы хотим импортировать подмодули и напрямую деконструировать назначение.

// javascript
import { myvar, myfunc } from "./mymodule";
console.log(myvar);
myfunc();

пока вpython, который имеет противоположную семантику:

# python
from mymodule import myvar, myfunc
print myvar
myfunc()

2. Экспортировать пустую функцию

Как экспортировать пустую функцию,pythonнужно использовать"pass«Ключевые слова занимают место, чтобы избежать ошибок при запуске. мой модуль.py:

# python
def myfunc(): pass

// javascript
export function myfunc() {}

Более подробные сравнения см. здесь:Modules and import in ES6 for Python developers

2. Как интерфейс обучается изящноPython?

Много передних парPythonЭнтузиазм начинается с любопытства и заканчивается застоем.

Существует технический разрыв между фактическим развитием и развитием, и никто не руководствуется и направляет его. Я не знаю, что может сделать текущий уровень? В таком круге сомнений навыки программирования являются застойными, а ползание является одним из лучших направлений продвижения.

поисковый роботPythonБолее часто используемая сцена на международном уровне,googleшироко использовались в началеPythonЯвляясь основой поискового робота, язык управляет всем.PythonРазработка языковых приложений.

Что касается моего личного развития, я также настоятельно рекомендую использовать краулер в качестве входа в приложение по нескольким причинам:

  • Рептилии направлены наweb页面Своего рода прикладная технология, передняя часть может безболезненно соединить много знаний.
  • Первым шагом сканера является получение исходного кода страницы, а затем выполнение извлечения информации. из которых дляdomeузлаclass/idВыбирайте, переднюю часть заново учить не нужно.

  • Виртуальный вход в сканер иSelenium, что может улучшить понимание интерфейсом автоматизированного тестирования.
  • Окончательная форма краулера — это поисковая система, в которойSEOЭто момент, на который должен обратить внимание каждый фронтенд.
  • В процессе понимания сканеров поисковых систем внешний интерфейс может понять рендеринг на стороне сервера.SSRи одностраничные приложенияCSRразличные эффекты.

Краулер делится на два направления: ориентированный на страницы и ориентированный на интерфейс.

  • Если смотреть на страницу, передняя часть, естественно, знакома.
  • Для интерфейса вам нужно знать, как использовать программное обеспечение для захвата пакетов (Fiddler/Charles).
  • В процессе можно освоить навык — захват пакетов. не смотри большеNetworkГлупо обновился.

Начали с краулеров, но больше, чем краулеры:

Crawler -> Очистка данных -> Работа с базой данных -> Очистка данных -> Интеллектуальный анализ данных -> Анализ данных...

Спускаясь по этой цепочке, можно почерпнуть много знаний:

ScrapyРамка рептилии,RedisРаспределенная транзакция, обработка данныхPandas, анализ естественного языкаNLP, полную визуализацию данных и многое другое...

Что касается обсуждения языка, я полностью согласен со словами г-на Ли Бина:

3. Пан Шии учитсяPython

Итак, я построил другой подходящий для просмотра на переднем углу.pythonНет публики.

Не медлите, приходите и поиграйте с учителем убеждения. ~

Труба - учитель убеждения Python (будет обновляться последовательно)

4. Постскриптум и цитата

❤️ После прочтения трех вещей

Если вы найдете этот контент вдохновляющим, я хотел бы пригласить вас сделать мне три небольших одолжения:

  1. Ставьте лайк, чтобы больше людей увидело этот контент
  2. Обратите внимание на паблик «Учитель фронтенд-убеждения», и время от времени делитесь оригинальными знаниями.
  3. Также смотрите другие статьи

Вы также можете прийти ко мнеGitHubПолучите исходные файлы всех статей в блоге:

Руководство по убеждению:GitHub.com/Roger-Hi RO/…