Comparez les différences de programmation entre Python et Ruby à travers la boucle for

Chat Python 2021-11-25 18:43:21
comparez les diff rences programmation

△Cliquez en haut“ PythonCAT ”Attention ,Réponse“ 1 ”Obtenir un livre électronique
Auteur:Doug Turnbull
Traducteur:Les petits pois fleurissent les chats@PythonCAT
Original: ANGLAIS: https://softwaredoug.com/blog/2021/11/12/ruby-vs-python-for-loop.html

Ruby Avec Python Les différences entre les deux sont largement imputables àforLe cycle voit l'essence.

Python PropriétéforDéclarations.L'objet ditforComment collaborer,EtforLa boucle de l'expérience traite le contenu retourné par l'objet.

Ruby C'est le contraire..In Ruby Moyenne,forEn soi(Adoptioneach)Est une méthode d'objet.L'appelantforLe corps de la boucle passe à cette méthode.

In Python Dans les habitudes linguistiques,Le modèle objet est soumis à for Cycle.Et Ruby Moyenne,for La boucle obéit au modèle objet.

C'est - à - dire,In Python Moyenne,Si vous voulez personnaliser le processus d'itération,Vous pouvez demander à l'objet de dire à l'interpréteur comment faire une itération:

class Stuff:
    def __init__(self):
        self.a_list = [1,2,3,4]
        self.position = 0
    def __next__(self):
        try:
            value = self.a_list[self.position]
            self.position += 1
            return value
        except IndexError:
            self.position = 0
            raise StopIteration
    def __iter__(self):
        return self

Ici,Stuff Utiliser __next__ Et __iter__ La méthode magique se rend itératif(Devenir un objet itérable).

for data in Stuff():
    print(data)

Et pourtant,In Ruby Dans l'utilisation de,Tu vas faire le contraire..Vous allez for Créer une méthode,Il reçoit le Code(body Corps)Pour courir.Ruby Placer le Code de procédure dans le bloc de code,Pour qu'ils puissent être utilisés pour transmettre.

Et puis,IneachDans la méthode,UtiliseryieldInteraction avec les blocs de code,Passez la valeur au bloc de code pour faire ce que vous devez faire(Pour toute méthode,Les blocs de code sont des paramètres implicites).

Si on réécrit le code ci - dessus,Ça va arriver:

class Stuff
  def initialize
    @a_list = [1234]
  end

  def each
    for item in @a_list
      yield item
    end
  end
end

UtilisereachItération:

Stuff.new().each do |item|
  puts item
end

Ne pas transmettre les données à for Cycle(Python),Au lieu de cela, passez le Code de boucle aux données(Ruby).

Mais la différence va bien au - delà:

Python La construction est similaire à for Structure de,Pour toutes sortes de traitements;Ruby Mettre le traitement des données dans la méthode.

Excellent Python Le Code est implémenté à l'aide d'une liste et d'une analyse de DictionnairemapEtfilter,Le coeur de ces expressions est for/La sémantique de l'itération est la même.

In [2]: [item for item in Stuff()]
Out[2]: [1234]

In [3]: [item for item in Stuff() if item % 2 == 0]
Out[3]: [24]

Ruby Continuer à utiliser la méthode de préférence,Sauf queeachMéthodes,Il existe également une série de nouvelles méthodes de traitement des collections,Comme suit:

class Stuff
  ...

  def select
    out = []
    each do |e|
      # If block returns truthy on e, append to out
      if yield(e)
        out << e
      end
    end
    out
  end

  def map
    out = []
    # One line block syntax, append output of block processed on e to out
    each {|e| out << yield(e) } 
    out
end
puts Stuff.new().map {|item| item}
puts Stuff.new().select{|item| item.even?}

Python Dis - le.:“Vous nous avez dit comment itérer votre instance,Nous allons décider comment traiter vos données.” Python Il y a des primitifs basés sur la langue qui sont utilisés comme itérations et processus,Si vous voulez personnaliser l'itération,Il suffit d'ajouter le code correct à for Corps circulatoire(Ou expression)Moyenne.

Ruby J'ai inversé le script,Donner aux objets une personnalisation plus profonde.C'est vrai.,Dans certains cas,Nous pouvons ajouter plus de flux de contrôle dans le bloc de code.C'est vrai.,On peut aussi mettre each La méthode est utilisée pour map.Mais Ruby Permettre aux objets d'implémenter différents map Et each(Si“each”La mise en œuvre de“map”,Ça pourrait être très insatisfaisant,Ce n'est même pas sûr).Ruby L'objet de,Il y a une meilleure façon de.

In Ruby Moyenne,L'objet contrôle la visibilité fonctionnelle.Et Python Moyenne,C'est la grammaire qui contrôle.

Authentique Python Une vision forte du traitement des données.Python Dis - le.:“Regarde.,90% Le Code de l'entreprise est bien intégré à ces idées,Suivez - le,Il suffit de finir le travail.”Transformez votre objet en quelque chose qui for-Cyclique,Arrête de m'embêter.

Et pourtant Ruby Dis - le.:“Dans certains cas importants,Nous ne voulons pas donner trop de pouvoir à l'appelant.”Alors... Ruby Laissez les objets contrôler la façon dont ils sont traités,Et demander aux développeurs de suivre la façon dont les objets veulent interagir.Ruby Pas si fort en informatique.

Python Plutôt basé sur C Langue“Orienté objet”Extension de la programmation.Sur la base C De OO Moyenne,C'est comme... posix Descripteur de fichier ou Win32 Même poignée de fenêtre,La langue n'impose pas“Méthodes”Lié à l'objet lui - même.Au contraire.,La liaison objet - méthode n'est basée que sur la Convention.

Python Penser que ce monde de processus peut évoluer——Ça améliore cette façon de penser,Pour le rendre plus sûr.La fonction libre existe(PythonNote pour les chats:Il s'agit d'une fonction intégrée,Parce qu'il ne dépend d'aucun objet de classe,Donc, oui.“Libre”),Et souvent plus recommandé que la méthode objet.L'objet existe,Mais d'une manière relativement hésitante.

La méthode de classe reçoit“self”Comme premier paramètre,Presque Win32 Ou Posix API Dans C La fonction accepte les poignées de la même façon.Quand la fonction est passée,Ils sont presque considérés comme C Pointeur de fonction pour traiter.

Python Pensez au paradigme procédural(procedural paradigm)C'est le plus important,C'est la base de tout,Au - dessus se trouve la couche sémantique orientée objet.

Et pourtant,Ruby Et l'inverse.Ruby Faire de l'objet la base de la pyramide.Ruby Il y a un monde de processus confus dans le bloc de code,Laissez l'objet utiliser ces blocs de processus.

Ruby Il n'y a pas eu de destruction de l'objet pour suivre la base procédurale de la langue,Mais adapter le Code procédural à la vision du monde de l'objet.Ruby Il y a une vraie méthode privée,Pas comme ça. Python Méthode privée/Paramètres,Juste par convention.

Sans aucun doute,Quand je suis entré en contact du point de vue de la programmation du système Python Heure,C'est naturel pour mon apparence.Avoir la capacité d'écrire si nécessaire C Compétence linguistique,Il a évolué,Pour rendre ce monde plus sûr.C'est peut - être pour ça que c'est dans le domaine de l'informatique numérique, où les ressources du système sont importantes,J'ai trouvé un endroit où travailler.

Pas étonnant. Ruby Idéal pour les développeurs pour construire plus facilement、Peut - être plus sûr API Et DSL.Ruby Vous voulez que les programmeurs modélisent le domaine,Au lieu de modéliser l'environnement de programmation,Pour beaucoup de travail,Ça semble être la bonne approche.
PythonCAT Technology Exchange Group est ouvert!Il y a des employés en service dans les grandes usines nationales de première et de deuxième ligne,Il y a aussi des universités nationales et étrangères qui étudient des étudiants,Il y a plus d'une décennie de vieux oiseaux programmés,Il y a aussi de nouveaux élèves qui viennent d'entrer dans les écoles primaires et secondaires,Bonne atmosphère d'étude!Les étudiants qui veulent entrer dans le Groupe,S'il vous plaît, répondez à『 Groupe AC』,Obtenez Wechat Brother (Refuser le parti publicitaire,Si c'est vrai.!)~


Pas encore accro?Essayez - les




Python Comment utiliser correctement les méthodes statiques et les méthodes de classe?

Python Le père de l'explosion : Au moins l'année prochaine Python Accélère. 1 X!

Un article d'expression régulière qui mérite d'être collecté

Cool.!Python La fonction prend du temps exception surveillance automatisée !

Python Séminaire officiel:Retirer complètement GIL C'est possible??

PourquoirangePas un Itérateur?range .Quel genre de ?


Si vous trouvez cet article utile
S'il vous plaît, soyez généreuxPartagerEt - Oui. ,Merci beaucoup.
版权声明
本文为[Chat Python]所创,转载请带上原文链接,感谢
https://pythonmana.com/2021/11/20211125183653152f.html

  1. python3.7 FileNotFoundError: [WinError 2] 系统找不到指定的文件。
  2. 最全面的Python重点知识汇总
  3. python中 我想爬取一个网页,我在cmd中pip list中已经把requests 以及bs4 弄好了 但是他还是提示我没有那个模块
  4. You can learn Python articles without reading online classes (the first day)
  5. 在Python和Go项目之后使用Rust的经验分享 - scaleway
  6. 使用PyO3从Python调用 Rust:加速Python
  7. Python 3.7 filenotfounderror: [winerror 2] le système n'a pas pu trouver le fichier spécifié.
  8. Python 一切皆对象
  9. 【Pandas学习笔记01】强大的分析结构化数据的工具集
  10. 求各位亲们可以解答一下嘛,为什么跑不出来呀,大学Python
  11. 【Pandas学习笔记01】强大的分析结构化数据的工具集
  12. python飞机大战如何让飞机始终在界面中,不能跑出界面
  13. Python代码阅读(第63篇):数字奇偶性
  14. python建立⼀個圖形介⾯應⽤(GUI app)
  15. python接口自动化的html格式报告以邮件形式发送展示的原文很丑怎么处理
  16. 针对初学者,我建议你学这 3 个 Python AutoEDA 工具包
  17. #yyds干货盘点#Python-爬虫_urlib一个类型和六个方法
  18. Pour les débutants, je vous recommande d'apprendre ces 3 kits autoeda Python
  19. 我想问python怎么入门嘞?求各路人士
  20. Summary of today's Django lessons: data reverse query triggers error field 'score_ jieshoufankui‘ expected a number but got ‘‘-20211109
  21. 关于#python_while循环的写法#的问题,如何解决?
  22. Python异常处理中异常的种类有哪些?你知道几个?
  23. Python异常處理中异常的種類有哪些?你知道幾個?
  24. Quels sont les types d'exceptions dans la gestion des exceptions python? Combien en savez - vous?
  25. À propos de # Python Comment résoudre le problème de l'écriture de la Boucle while?
  26. Python如何操作system.data.sqlite数据库
  27. python数字游戏,让你欲罢不能
  28. Python中的可迭代对象、迭代器、For循环工作机制、生成器
  29. 一个从没接触过编程的人,如何自学进入Python行业?
  30. 一份超级实用的 Python ”技巧“清单
  31. Python 程序员给上路初学者的3点忠告
  32. 3 conseils pour les débutants sur la route par les programmeurs Python
  33. Une liste de conseils Python super pratiques
  34. Comment quelqu'un qui n'a jamais été en contact avec la programmation peut - il apprendre à entrer dans l'industrie python?
  35. Objets itérables, itérateurs, pour le mécanisme de travail circulaire, générateurs en python
  36. Les Jeux de chiffres Python vous font vous arrêter
  37. Comment Python fonctionne avec la base de données system.data.sqlite
  38. Python之html与markdown互相转换
  39. Python之html與markdown互相轉換
  40. Conversion HTML et markdown de Python
  41. Python生成的随机数,要怎么设定成随机数a小于随机数b啊
  42. Python生成的隨機數,要怎麼設定成隨機數a小於隨機數b啊
  43. Le nombre aléatoire généré par Python, comment définir le nombre aléatoire a est inférieur au nombre aléatoire B
  44. Python爬虫能做什么
  45. Python老技师给上路初学者的3点忠告
  46. 3 conseils aux débutants sur la route de l'ancien technicien Python
  47. Que peuvent faire les reptiles Python
  48. The code NPM cloned from git will report a python error after it is installed!
  49. 数据分析从零开始实战,Pandas读写CSV数据
  50. Python基础(十二):类与对象
  51. Python Foundation (12): classes et objets
  52. Python基礎(十二):類與對象
  53. L'analyse des données commence à zéro et pandas lit et écrit les données CSV
  54. Python Qt GUI设计:QSlider滑动条类(基础篇—16)
  55. #yyds干货盘点#数据分析从零开始实战,Pandas读写CSV数据
  56. This paper designs an examination system for automatically setting questions and judging papers by using Python standard library language to investigate the ability of users to calculate four integers within 100.
  57. Yyds Dry Inventory # Data Analysis started from zero, pandas read and write CSV Data
  58. python数据结构:数组、列表、栈、队列及实现
  59. Python编程真的是未来人工智能的主流吗?
  60. Python编写通讯录,支持模糊查询,利用数据库存储