精华内容
下载资源
问答
  • 动态语言

    千次阅读 2017-05-26 21:25:46
    Python是一门动态的语言1、什么是动态语言​ 动态编程语言是高级程序设计语言的一个类别,他是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被改进,已有的函数可以被删除或者是其他的结构上...

    Python是一门动态的语言

    1、什么是动态语言

    ​ 动态编程语言是高级程序设计语言的一个类别,他是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被改进,已有的函数可以被删除或者是其他的结构上的变化。动态语言有:javascript、php、Ruby、Python等都是动态语言。

    2、运行过程中给对象绑定(添加)属性

    In [1]: class Person(object):
       ...:     def __init__(self, new_name):
       ...:         self.name = new_name
       ...:         
    
    In [2]: wang = Person("老王")
    

    ​ 上面的代码中,我们定义了一个Person类,在类中有一个初始属性name,如果我们想添加age属性呢?

    In [3]: wang.age = 18
    
    In [4]: print(wang.name)
    老王
    
    In [5]: print(wang.age)
    18

    ​ 要给实例对象添加实例属性,可以直接对象名.属性 = 值

    3、运行的过程中给类绑定(添加)属性

    ​ 上面我们在运行过程中给实例对象添加了属性,那么我们再创建一个实例对象,能不能直接去调用age属性呢?

    In [6]: li = Person("老李")
    
    In [7]: li.age
    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-7-683a5751e9b0> in <module>()
    ----> 1 li.age
    
    AttributeError: 'Person' object has no attribute 'age'
    

    ​ 我们发现在实例对象li中没有age这个属性,我么想给所有的Person的实例都加上age属性怎么办?答案就是直接给Person添加属性:

    
    In [8]: Person.age = 0
    
    In [9]: li = Person("老李")
    
    In [10]: li.age
    Out[10]: 0

    4、运行过程中给类添加方法

    ​ 首先我们定义一个函数:

    def print_msg(self):
        print("姓名:%s,年龄:%d" % (self.name, self.age))

    ​ 上面我们直接给对象绑定属性,直接实例对象.属性 = 值,那给实例对象添加方法呢?可不可以直接实例对象.方法名 = 方法名呢?

    wang.print_mag = print_msg
    # 会直接产生异常 AttributeError: 'Person' object has no attribute 'print_msg'
    # 是因为在调print_msg方法的时候,self并没有参数

    ​ 那么我们怎么做才能添加呢?

    import types
    wang.print_msg = types.MethodType(print_msg, wang)

    5、添加类方法

    @classmethod
    def p_class(cls):
        cls.num = 100
    
    # 动态添加类方法
    Person.p_class = p_class
    Person.p_class()
    print(Person.num)

    6、添加静态方法

    @staticmethod
    def run():
        print("-----------run----------")
    
    # 动态添加静态方法
    Person.run = run
    li.run()

    7、__slots__

    • 动态语言:可以再运行过程中,修改代码

    • 静态语言:编译时已经确定好代码,运行过程中不能修改

      如果我们想要限制实例的属性,怎么办?

      比如,只允许对Person添加name、age、sex属性。

      在Python中为了达到限制的目的,Python是允许在定义class的时候,定义一个特殊的__slots__,来限制class实例能添加的属性

      In [12]: class Person(object):
       ....:     __slots__ = ("name", "age", "sex")
       ....:     
      
      In [13]: p = Person()
      
      In [14]: p.name = "老王"
      
      In [15]: p.age = 18
      
      In [16]: p.sex = "男"
      
      In [17]: p.address = "隔壁"
      <hr />
      
      AttributeError                            Traceback (most recent call last)
      <ipython-input-17-c00075f138fc> in <module>()
      ----> 1 p.address = "隔壁"
      
      AttributeError: 'Person' object has no attribute 'address'
      

    注意点:

    • 使用__slots__要注意,__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的
    展开全文
  • 动态类型语言&动态语言

    千次阅读 2017-11-18 18:56:34
    动态语言 动态类型语言首先,这是两个不同的概念动态语言 dynamic programming language程序运行时,允许改变程序结构(例如引进新函数、删除旧函数)或变量类型。 从这个观点来看,Perl、Python、Ruby是动态语言,...

    首先,这是两个不同的概念

    动态语言 dynamic programming language

    程序运行时,允许改变程序结构(例如引进新函数、删除旧函数)或变量类型。
    从这个观点来看,Perl、Python、Ruby是动态语言,C++、Java、C#不是动态语言

    动态类型语言 dynamically typed language

    在运行期检查变量类型的语言,也就是在编写代码的时候可以不指定变量的数据类型,例如Python、Ruby。动态类型语言中,变量没有类型,而值有类型

    静态类型语言 statically typed language

    变量的数据类型在编译期声明以后,不能再改变其数据类型,即变量在使用前必须先声明类型。检查在编译期进行,好处是编译期提前检查可能出现的错误,例如C++、Java

    展开全文
  • 动态语言和静态语言

    千次阅读 2020-02-16 21:49:57
    动态语言无需编译,它由解释器动态解释执行,一般来说,动态语言拥有比静态语言更大的灵活性和表达能力。动态语言优势在于灵活,易于开发和学习,劣势在于性能较低。在高性能服务器和并行处理的实现方案里,动态语言...

    动态语言也称为脚本语言,是介于标签语言(如HTML,XSLT,VML)和静态语言(如C++、C#、Java,也称编译语言)之间的语言。JavaScript、PHP、Perl、Ruby等都是动态语言。动态语言无需编译,它由解释器动态解释执行,一般来说,动态语言拥有比静态语言更大的灵活性和表达能力。动态语言优势在于灵活,易于开发和学习,劣势在于性能较低。在高性能服务器和并行处理的实现方案里,动态语言的优势掩盖自身的不足。一般来说,完成同样逻辑功能的程序,使用Ruby或Python之类的动态语言所需的代码量往往只有使用Java实现版本的1/10,相比C/C++差距更大。近两年来,动态语言似乎有山雨欲来风满楼的气势。在各大开发技术网站,有大量介绍动态语言的文章,在各大论坛里,人们针对动态语言的学习、交流、论战、预测的帖子不断成为抢眼热帖,搅动着开发者的神经。动态语言最突出的特性是语法简洁灵活,易于学习,拥有大量高级程序库,无须从底层开始搭建程序,降低了应用实现的难度。一个C++程序员,往往经过了几年的训练仍然不能开发出可用的程序,但动态语言的程序员经过几个月的训练就已经可以编写出可复用性的代码了。此外,动态语言的代码往往以开源的形式发布,容易被使用和学习。程序库往往决定了一种语言应用难度,纵观历史,凡是具有优秀程序库的语言生命力都很顽强,反之则容易销声匿迹。目前几种流行的动态语言,都具有丰富的程序库,在Python中,不仅具有诸如网络应用,多线程,图像处理,科学运算之类的程序库,甚至还拥有多套不同量级的Framework来辅助Web开发。事实上,任何需要的功能几乎都能找到相对稳定的程序库,大部分程序员仅仅需要组合这些库就能编写出强大的应用——这也正是使用动态语言开发程序代码量较少的原因之一。除了众多的程序库,动态语言本身的种类也远远大于静态语言,同样,每种语言也各具特点。Ruby,Python,Groovy,Perl是四种颇具代表性的动态语言,按照一般的看法,这些语言适合用来黏合不同的系统和模块,素有“胶水”的之称。后来人们发现“胶水”不仅仅能粘合其他模块,本身也具有强大的功能。在没有性能问题的重要性不突出的场合,动态语言看起来无所不能了,无论是网站还是应用程序,都能看到动态语言的身影。对时下的程序员来说,掌握一种动态语言已不仅仅是赶时髦,虽然你不一定能够靠单单一种动态语言找到一份喜欢的工作,但适时地采用动态语言,一定可以让你的工作

    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

    变的简单许多。

    展开全文
  • 通常我们所说的动态语言、静态语言指 动态类型语言(Dynamically Typed Language)和 静态类型语言Statically Typed Language)。 还有一个 Dynamic Programming Language (动态编程语言),静态编程语言。 ...

    定义 
    通常我们所说的动态语言、静态语言指 动态类型语言(Dynamically Typed Language)和 静态类型语言Statically Typed Language)。
    还有一个 Dynamic Programming Language (动态编程语言),静态编程语言。

    动态类型语言:在运行期间检查数据的类型的语言。用这类语言编程,不会给变量指定类型,而是在附值时得到数据类型。如:Python和ruby就是典型动 态类型语言。很多脚本语言vbscrīpt,javascrīpt也是这类语言。看下面javascrīpt代码:

    function add(a,b){
    return a+b;
    }
    add(1,2);
    add('1',2);



    静态类型语言:相反静态类型语言是在运行前编译时检查类型。在写代码时,没声明一个变量必须指定类型。如:java,c#,c,c++等等。
    public int add(int a,int b){
    return a+b;
    }
    其实比较一下代码,你很快就会发现,其实区分动态静态类型语言从语法上就够了,语言语法格式基本就可确认动静态类型。

    而Dynamic Programming Language (动态编程语言)指在程序运行过程中可以改变数据类型的结构,对象的函数,变量可以被修改删除。比如:javascrīpt就是这类语言,ruby, python也属于这类语言。而c++,java不属于这类语言。看javascrīpt代码:

    function Person(name){
    this.name=name;
    }
    Person.prototype.getName=function(){
    return this.name;
    }
    var person=new Person("okok");
    alert(person.getName());
    person.getName=function(){return "nono"};
    alert(person.getName());



    当然静态编程语言 是运行时不可改变结构了。

    网上有人说 类型检查和改变结构 是静态语言和动态语言两个区别点。基本概念上应该就这些,是我个人理解,不一定完全正确。个人感觉没必要很清晰分门类,掌握优点、特点就好了。这个话题说开根本不是我能说清楚的。总结思考一下。

    有三个名词容易混淆:

    1. Dynamic Programming Language (动态语言或动态编程语言)
    2. Dynamically Typed Language (动态类型语言)
    3. Statically Typed Language (静态类型语言)

    FantasySoft在他文章中所提到的动态语言与静态语言实际上指的就是动态类型语言与静态类型语言。

    动态语言,准确地说,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的 ECMAScript(JavaScript)便是一个动态语言。除此之外如Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态 语言。

    所谓的动态类型语言,意思就是类型的检查是在运行时做的,比如如下代码是不是合法的要到运行时才判断(注意是运行时的类型判断):

    defsum(a,b): 
     return a + b 

    而静态类型语言的类型判断是在运行前判断(如编译阶段),比如C#就是一个静态类型语言,静态类型语言为了达到多态会采取一些类型鉴别手段,如继 承、接口,而动态类型语言却不需要,所以一般动态语言都会采用dynamic typing,常出现于脚本语言中。(idior不知道这能不能回答你对动态语言多态的疑问^_^)

    这里我需要明确说明一点,那就是,是不是动态类型语言与这门语言是不是类型安全的完全不相干的,不要将它们联系在一起!

    静态类型语言的主要优点在于其结构非常规范,便于调试,方便类型安全;缺点是为此需要写更多的类型相关代码,导致不便于阅读、不清晰明了。动态类型 语言的优点在于方便阅读,不需要写非常多的类型相关的代码;缺点自然就是不方便调试,命名不规范时会造成读不懂,不利于理解等。顺便说一下,现在有这样一 种趋势,那就是合并动态类型与静态类型在一种语言中,这样可以在必要的时候取长补短,Boo就是一个很好的试验性例子。^_^

    最后说一下Boo,Boo是一个静态类型语言,虽然用duck typing可以模拟dynamic typing,但是duck并不支持所有类型的操作替代,所以即使完全使用duck typing也不能达到dynamic typing。就像FantasySoft所述,Type Inference不是动态类型语言的特性,所以支持Type Inference不代表这门语言就是dynamically typed。

    再特地为Ninputer 这个VB的fans说一下VB.NET^_^,VB.NET是dynamically typed语言。

    展开全文
  • 1.动态语言 动态语言是在运行时才确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。 例如PHP、ASP、Python、SQL、JavaScript、Unix Shell等等。 动态语言的优势:思维不受...
  • 静态语言和动态语言的区别

    万次阅读 多人点赞 2018-12-12 11:12:16
    我心血来潮就去百度了一番动态语言和静态语言的具体区别,一番百度才发现自己原来的想法不够全面,所以在这里做个笔记。 基本概念 动态类型语言:在运行期进行类型检查的语言,也就是在编写代码的时候可以不指定...
  • 关于如题这几个概念,大部分人应该比较熟悉,但是我昏了好久,所以写下来加深印象。 1. 动态语言 ...除此之外如Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态语言。 而其实我们平时说
  • 动态语言的定义:动态编程语言 是 高级程序设计语言 的一个类别,在计算机科学领域已被广泛应用。它是一类 在 运行时可以改变其结构的语言 :例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他...
  • 动态语言和静态语言 1.动态类型语言:是指在运行期间才去做数据类型检查的语言。在用动态语言编程时,不用给变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种...
  • 动态语言和静态语言的区别

    万次阅读 2016-09-18 10:55:26
    Dynamic Programming Language (动态语言或动态编程语言) Dynamically Typed Language (动态类型语言) Statically Typed Language (静态类型语言) FantasySoft在他文章中所提到的动态语言与静态语言实际上指的...
  • 动态语言 该术语在维基百科上有定义,定义如下: 动态编程语言是高级程序设计语言的一个类别,在计算机科学领域已被广泛应用。它是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已...
  • 静态语言和动态语言之探索

    千次阅读 2018-05-18 14:30:13
    有三个名词容易混淆:Dynamic Programming Language (动态语言或动态编程语言)Dynamically Typed Language (动态类型语言)Statically Typed Language (静态类型语言)静态类型语言的类型判断是在运行前判断(如编译...
  • 什么是动态语言/静态语言

    千次阅读 2017-07-23 10:40:18
    动态语言动态语言是指在运行期间才去做数据类型检测的语言。在用动态语言编程的时候并不需要给变量指定数据类型,该语言会在第一次将数据赋值给变量的时候在内部将数 据类型记录下来。典型的动态语言如Python,...
  • 动态语言静态化

    万次阅读 2018-02-06 12:50:06
    一、什么是动态语言静态化 将现有PHP等动态语言的逻辑代码生成为静态html文件,用户访问动态脚本重定向到静态html的过程 注 : 对实时性要求不高的页面才适合去做动态语言静态化   二、为什么要静态化 1. 动态...
  • 动态语言,静态语言的区别

    千次阅读 2017-08-31 10:15:04
    通常我们所说的动态语言、静态语言指 动态类型语言(Dynamically Typed Language)和 静态类型语言Statically Typed Language)。 还有一个 Dynamic Programming Language (动态编程语言),静态编程语言。 ...
  • 1、动态语言和静态语言 通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。 (1)动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,...
  • JavaScript语言是动态语言、弱类型语言。 静态类型语言、动态类型语言分析: 静态类型语言:变量定义时有类型声明的语言。 1)变量的类型在编译的时候确定 2)变量的类型在运行时不能修改 这样编译器就可以确定...
  • Python动态语言理解

    千次阅读 2017-06-18 08:51:02
    动态语言的定义动态编程语言 是 高级程序设计语言 的一个类别,在计算机科学领域已被广泛应用。它是一类 在运行时可以改变其结构的语言 :例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他...
  • 今天小熙突然想到一个问题,那就是Java到底是动态语言还是静态语言,是强类型还是弱类型呢?虽然知道但是还是不够深入,接下来就一起探讨下吧。 二. 图释 小熙碰巧看到一张,完美的区分了以上的问题 如图所示,...
  • Python是动态语言

    千次阅读 2018-09-13 15:17:40
    在Python中,等号=是赋值语句,可以把...这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋...
  • Python动态语言-动态添加属性和方法

    千次阅读 2017-09-14 09:32:21
    动态语言的定义动态编程语言 是 高级程序设计语言 的一个类别,在计算机科学领域已被广泛应用。它是一类 在运行时可以改变其结构的语言 :例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他...
  • Python高级编程--动态语言

    千次阅读 2017-06-11 20:53:13
    1. 动态语言1.1 定义 动态编程语言是高级程序设计语言的一个类别,在计算机科学领域已被广泛应用。它是一类 在运行时可以改变其结构的语言 :例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 880,867
精华内容 352,346
关键字:

动态语言