网站放友情链接违法吗wordpress标签栏

当前位置: 首页 > news >正文

网站放友情链接违法吗,wordpress标签栏,椒江区建设局网站,做网站需要固定ip吗Mojo#xff1a;新型AI语言中的7个令人惊叹的Python升级 编程之美 用简单的英语解释人工智能 编程之美 由Coding Beauty设计的图像#xff0c;使用Mojo标志和Python标志。 它比C更快#xff0c;与Python一样简单#xff0c;但速度提高了35000倍。 进入Mojo#xff1a;一种… Mojo新型AI语言中的7个令人惊叹的Python升级 编程之美 用简单的英语解释人工智能 编程之美 由Coding Beauty设计的图像使用Mojo标志和Python标志。 它比C更快与Python一样简单但速度提高了35000倍。 进入Mojo一种专为AI开发人员制作的全新编程语言由Modular公司创建该公司由Swift的原始创作者Chris Lattner创立。 这个半著名的35000倍增长来自Mojo与其他语言之间的基准比较使用特定AWS实例上的Mandelbrot算法。图片来源Modular网站。 它是Python的超集结合了Python的易用性、简单性和多功能性以及C的出色性能。 如果你对人工智能充满热情已经掌握了Python那么Mojo绝对值得一试。让我们一起深入探讨这种令人兴奋的语言的7个强大功能。 Mojo的特点 几天前Mojo正式发布现在你可以下载官方的SDK来尝试它。 尽管是在它被宣布后不久我就注册了Mojo的访问权限几天后我获得了访问权限。 Mojo游乐场的截图来源Coding Beauty 我探索了他们提供的所有酷炫新功能甚至有机会运行一些代码看看这种语言是如何工作的。以下是我发现的7个有趣的Python升级 用于有类型变量和常量的let和var Mojo引入了新的let和var语句允许我们创建变量。 如果需要的话我们可以为变量指定类型比如Int或String就像在TypeScript中一样。var允许变量更改let不允许。 所以它不像JavaScript的let和var - var没有提升let是常量。 def your_function(a, b):    let c  a    #取消注释以查看错误    # c  b  #错误c是不可变的    if c ! b:        let d  b        print(d)your_function(2, 3) 用于更快的抽象的structs 我们在C、Go等语言中都有这些。 Structs是Mojo的一项功能类似于Python类但不同之处在于Mojo类是静态的你不能在运行时添加更多方法。这是一种权衡因为它不够灵活但更快。 struct MyPair:    var first: Int    var second: Int    #我们在这里使用fn而不是def - 我们马上会解释    fn init(inout self, first: Int, second: Int):        self.first  first        self.second  second    fn lt(self, rhs: MyPair) - Bool:        return self.first  rhs.first or              (self.first  rhs.first and               self.second  rhs.second) 这里有一种struct比class更严格的方式所有字段必须明确定义。 Mojo来源Coding Beauty。 强类型检查 这些structs不仅给了我们灵活性还让我们像TypeScript编译器一样在Mojo中在编译时检查变量类型。 def pairTest() - Bool:    let p  MyPair(1, 2)    #取消注释以查看错误    # return p  4 #会导致编译时错误    return True 数字4是一个Intp是一个MyPairMojo根本不允许这种比较。 方法重载 C、Java、Swift等语言都有这个功能。 函数重载是指有多个具有相同名称但接受不同数据类型参数的函数。 看看这个 struct Complex:    var re: F32    var im: F32fn init(inout self, x: F32):        从实数创建复数。        self.re  x        self.im  0.0    fn init(inout self, r: F32, i: F32):        从实部和虚部创建复数。        self.re  r        self.im  i 像JavaScript和Python这样的无类型语言根本无法实现函数重载这是显而易见的原因。 尽管在模块/文件函数和类方法上允许重载但不仅仅基于返回类型还需要函数参数具有类型。如果不这样做重载将无法工作 唯一会发生的事情是最近定义的函数将覆盖以前定义的具有相同名称的所有函数。 与Python模块的轻松集成 具有无缝Python支持是Mojo的最大卖点。 在Mojo中使用Python模块非常简单。作为超集你只需调用Python.import_module()方法并指定模块名称。 在这里我导入了numpy这是世界上最流行的Python库之一。 from PythonInterface import Python#把这个想象成Python中的import numpy as nplet np  Python.import_module(numpy)#现在就像在Python中使用numpy一样array  np.array([1, 2, 3])print(array) 你可以对任何Python模块做同样的操作唯一的限制是你必须导入整个模块才能访问个别成员。 所有的Python模块 在Mojo中运行速度提高了35000倍。 fn — 一种定义函数的新方式 fn基本上是有更严格规则的def。 def是灵活的、可变的、友好的Pythonfn是常量、稳定的、丰富的Python。它就像JavaScript的严格模式但只适用于def。 struct MyPair:    fn init(inout self, first: Int, second: Int):        self.first  first        self.second  second fn的规则 不可变的参数参数默认是不可变的 - 包括self - 所以你不能错误地改变它们。 必须指定参数的类型。 必须在fn中声明局部变量后才能使用它们当然要使用let和var。 明确的异常声明如果fn引发异常你必须明确指示 - 就像我们在Java中使用throws关键字一样。 可变和不可变函数参数 传值与传引用。 你可能在C等语言中遇到过这个概念。 Python的def函数使用传引用就像JavaScript一样你可以在def内部改变作为参数传递的对象。 但是Mojo的def使用传值所以你在def内部得到的是传递对象的副本。因此你可以随意改变那个副本这些改变不会影响主要对象。 传引用提高了内存效率因为我们不必为函数制作对象的副本。 但是新的fn函数呢像Python的def一样默认情况下它使用传引用但关键的区别是这些引用是不可变的。因此我们可以在函数中读取原始对象但不能改变它。 在Mojo中引入了一个新的、多余的关键字borrowed。 因为borrowed的作用是使Mojo fn函数中的参数不可变 - 默认情况下它们是不可变的。当处理占用大量内存的对象或者不允许制作传递对象副本时这是非常有价值的。 例如 fn use_something_big(borrowed a: SomethingBig, b: SomethingBig):    a和b都是不可变的因为db是默认的。    a.print_id()  // 10    b.print_id()  // 20let a  SomethingBig(10)let b  SomethingBig(20)use_something_big(a, b) 在fn函数中我们只需传递一个不可变的引用而不是制作巨大的SomethingBig对象的副本。 可变参数 如果我们需要可变的参数我们将使用新的inout关键字 struct Car:    var id_number: Int    var color: String        fn init(inout self, id: Int):        self.id_number  id        self.color  none    #像上面所述self是通过引用传递以进行突变的。    fn set_color(inout self, color: String):        self.color  color    #像Python中的def一样默认情况下参数如self被传递为borrowed。    fn print_id(self):  #与fn print_id(borrowed self):相同        print(Id: {0}, color: {1})        car  Car(11)car.set_color(red)  #没有错误 在fn函数中self是不可变的所以我们在set_color中需要inout来修改set_color中的color字段。 关键点 Mojo是一种新的AI编程语言具有C的速度和Python的简单性。 let和var声明Mojo引入了let和var语句用于创建可选类型的变量。var变量是可变的let变量是不可变的。 StructsMojo具有静态structs类似于Python类但由于它们是不可变的所以更快。 强类型检查Mojo支持编译时类型检查类似于TypeScript。 方法重载Mojo允许函数重载即具有相同名称但可以接受不同数据类型的函数。 Python模块集成Mojo提供无缝支持Python运行Python模块的速度显著提高。 fn函数定义Mojo中的fn关键字是Python中def的严格版本要求不可变的参数和明确的异常声明。 可变和不可变参数Mojo引入了可变inout和不可变borrowed函数参数。 最后的想法 当我们见证Mojo的揭幕时让人感到好奇的是这种新的面向AI的语言可能如何彻底改变编程领域。 弥合了Python提供的易用性与C的性能差距并引入了强大的功能如强类型检查这可能标志着AI开发的新时代。让我们怀着好奇心和渴望充分利用Mojo的全部潜力。 本文由 mdnice 多平台发布