2370

数据类型

乐果   发表于   2016 年 09 月 06 日 标签:JavaScriptPHPpython

笔记于2012-12-31, 百度空间。

现因百度空间封闭,故转载过来。

第一次了解“数据类型”这个概念,是学习javascript的时候。

js将数据分为两大类型:“基本类型”(或称“值类型”)和“引用类型”,二者的区别可以用一个经典的例子来说明:

基本类型:

funciton addTen(num){ 
  num+=10; 
  return num; 
} 
var count=20; 
var result=addTen(count); 
alert(count);//20 
alert(resullt);//30

引用类型:

function setName(obj){ 
    obj.name="LSN"; 
} 
var person=new Object(); 
setName(person); 
alert(person.name);//LSN

从上面的例子可以看出,“引用类型”变量obj引用了一个内存地址,而非值,所以传递给函数在内部改变时,外面的变量跟着改变了。

随着接触不同语言,发现其他语言在数据类型这个概念上,或多或少有相似也有差异。

PHP默认情况下,变量的数据类型是“基本类型”的,需要使用“引用类型”时,需要加上符号“&”。

基本类型:

function test(&$a,$b)
{
    foreach ($b as $v)
    {
        $a[] = 'f';
    }
}
$a = array('a', 'b', 'c');
$b = $a;  // $b 赋予为$a的值
test($a,$b);
var_dump($b);  // 此时,$b 为 array('a', 'b', 'c');

引用类型:用&

function test(&$a,$b)
{
    foreach ($b as $v)
    {
        $a[] = 'f';
    }
}
$a = array('a', 'b', 'c');
$b = &$a;  // $b 赋予为$a的引用
test($a,$b);
var_dump($b);  // 此时,$b 为 array('a', 'b', 'c', 'f' , 'f' , 'f' );

Python有句有名的口号“一切数据是对象,一切命名是引用。”,因为这句话,起初我认为所有数据都是“引用类型”的—它刚好和PHP相反。

但是,实际上Python还是有“基本类型”的—比如字符串类型的数据,见如下代码:

#coding=GBK

def test(a):
    a = a+'f'
s = 'abc'
test(s)
print s  #结果为abc

引用类型:比如“列表”、“字典”等等

#coding=GBK

def test(a):
    a.append('f')

s = ['a', 'b', 'c']
test(s)
print s  #结果为  ['a', 'b', 'c', 'f']

仅此,

本人上述理解不知道对否。

欢迎大家指正!

乐果   发表于   2016 年 09 月 06 日 标签:JavaScriptPHPpython

0

文章评论