重新学习数据结构和算法系列:Python 3和类

如果您尚未阅读有关该系列的目的,方式和希望的第一篇博客,请在此处查看第一篇

Python 2 vs Python 3🐍:哪一个?!?!

我认为选择Python 3而不是Python 2的最大原因是
从今年开始,将不再维护Python 2,
几乎没有错误修复(请参阅Python的官方文档中的更多信息 )。 因此,我决定继续在本系列的其余部分中使用Python 3进行编码。 现在,随之而来的是一个有趣的问题:版本之间有何变化? 我在互联网和许多博客文章中所看到的,想到的是:

# Python 2 verison of print
>>>  print "Hello World"
Hello World

# Python 3 version of print - print is now a function
>>>  print( "Hello World" )
Hello World

Python3中的打印语句

#Python 2 - range([start - optional], stop, [step - optional]) vs. xrange([start - optional], stop, [step - optional])
#range gives you a python list of values that you can iterate through immediately
>>>  a = range( 1 , 100 )
>>>  print "%s" % a
[ 0 , 1 , 2 , 3 ,... .99 ]
#xrange gives you back an object that evaluates lazily 👉🏾 (as you need it/on-demand) - good for memory
>>>  b = xrange( 1 , 100 )
>>>  print(b)
xrange( 1 , 100 )
>>>  for i in b:
>>>   print "%d" % i
[ 0 , 1 , 2 , 3 ,... .99 ]


#Python 3 - there is no more xrange! Just 1 range to rule them all (range in Python 3 includes xrange)
>>>  c = range( 1 , 100 )
>>>  print(c)
range( 1 , 100 )
# if you want to make a list out of the range object
>>>  new_c = list(c)
>>>  print(new_c)
[ 0 , 1 , 2 , 3 ,... .99 ]

Python中的range vs xrange->在此堆栈中查看更多说明溢出帖子👉🏾https : //bit.ly/2SPX4c5

#Python 2 - watch out for values that evaluate to float data types!
>>>  num1 = 1 / 2
>>>  print "num"
0

#Python 3 - you'll get a float value
>>>  num2 = 1 / 2
>>>  print(num2)
0.5

Python3中的float处理

虽然这并不是一个详尽的清单 ,但我希望这能提供一些从Python 2变为Python 3的想法。最终,如果您正在使用某种旧系统,则可能必须切换到Python 2。因此最好的情况是同时使用两个版本。

什么是课程?

看博客文章将着重于理解和
数据结构和算法的实现,我认为这很重要
解释任何面向对象编程的基本部分
语言,那就是 。 与其先给您一个定义,不如考虑图片。 让我们考虑一下您的标准计算器。

StellrWebUnsplash拍摄的照片

计算器具有人们可以使用的许多不同功能 。 一个人可以使用给定的数字来使用计算器,并进行加,减,乘,除,并(取决于是否是花哨的计算器)绘制图表,利用图表等等。 python中的类与计算器没有什么不同。

您可以将类视为具有定义的功能和属性的接口 (计算器的工作不是告诉您的天气cru是计算数字) 可以通过对象 (在这种情况下,您的手指就是对象进行访问 ,访问计算器的功能,提供数字和运算的输入,然后计算器将为您提供所需的输出)。

当您仔细思考时,这可以带您进入示例的困境(汽车可以被视为一类,您为电视使用的遥控器可以被视为一类,示例中的可能性和互联网无穷无尽)。 我们将选择停留在地面上,并在代码see中查看此简单示例的外观

从头开始构建计算器

class Calculator :
  
  def __init__ (self, num1, num2) :
    self.num1 = num1
    self.num2 = num2

考虑一下这就像为班级奠定基础

def __init__被认为是用来初始化类¹。 大多数(如果没有)
所有类都在类文件的顶部。 你可能是
想知道参数列表中的自我 。 这花了我一段时间才能弄清楚什么时候第一次学习面向对象的编程,但简而言之,自我“被用来引用初始化时正在创建的对象 ”¹。 Num1和Num2都被视为属性,并且更多地代表了如何扩展您的类(不必每次使用计算器都使用相同的两个数字)。

def add (self, n1, n2) :
  return (n1 + n2)

def subtract (self, n1, n2) :
  return (n1 - n2)

def multiply (self, n1, n2) :
  return (n1 * n2)

#remember in Python3 from above, you'll get out floats if you pass two integers
def divide (self, n1, n2) :
  return (n1/n2)

计算器类的其余功能

上面的加,减,乘和除函数为
考虑了计算器用户将要使用的实际“按钮”
物理上按所需的用法。 这些功能在
完全一样! 创建对象后,即可访问
通过该对象的类函数,如下所示

class Calculator :
  
  def __init__ (self, num1, num2) :
    self.num1 = num1
    self.num2 = num2
    
 def add (self) :
    return (self.num1 + self.num2)

 def subtract (self) :
    return (self.num1 - self.num2)

 def multiply (self) :
    return (self.num1 * self.num2)
  
 def divide (self) :
    return (self.num1/self.num2)

您将保存的最终Calculator.py文件

# assuming you have saved the above code to a .py file in the same directory of launching python interpreter or ipython 
  
>>>  cal_object1 = Calculator( 4 , 5 )
#cal_object1 is now the object that you will use to access the functions/methods in the Calculator class
>>>  cal_object1.add()
9
>>>  cal_object1.multiply()
20
>>>  cal_object1.subtract()
-1
>>>  cal_object1.divide()
0.8
>>>  cal_object1.num1
4
>>>  cal_object1.num2
5

# The flexible part about creating a class is assigning different attributes (or in our case numbers)
# all you have to do is create a new object! 
>>>  cal_object2 = Calculator( 10 , 20 )
>>>  cal_object2.add()
30

使用Calculator.py创建对象

你做到了!

来自https://giphy.com/的 GIF

如果此示例有意义,并且您对信息有把握,则可以
它! 拍拍自己的背部😃。 适应班级移动
通过本系列文章非常重要,因为我们将调用的数据结构和算法不是Python(或实际上是任何其他语言)所固有的,因此在实现之前需要先构建它们。

看到更好的唯一方法就是通过练习,我将发布
下周某个时候,我会公开分享在线抽认卡中出现的一些编程问题,以便您可以在任何地方练习编程。

直到下一次! 👋🏾

如果您对此博文的兴趣达到顶峰和/或受到鼓励/帮助,请在Twitter( @ jeff_ridgeway4 )上关注我!

参考文献:

[1] Shovic,John C和Alan Simpson。 “用类做Python。” 《 Python All-in-One For Dummies》 ,John Wiley&Sons,Inc.,2019年,第213–220页。

Hitesh Choudhary Unsplash

先前发布在https://medium.com/@walkingtruth146/re-learning-data-structures-and-algorithms-series-python-3-classes-95095e1c70c7

From: https://hackernoon.com/re-learning-data-structures-and-algorithms-series-python-3-and-classes-jz2h377i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值