http://blog.sysuschool.com/u/mygod/index.html
请稍候,载入中。。。
 
请稍候,载入中。。。
2019/3/22 8:55:00
博文:聊聊python与JavaScript

  去年高中新课标推计算思维,号召大家学教python语言,不巧那个时间段学JavaScript正紧要时刻,怕学串了,不愿入手,现在学习JavaScript告一段落了。于是,今年2月底在淘宝化了15元买了点python资料,到今天把基本语法看了一遍(面向对象还没学),对python有了点粗浅认识,今天写点东西小结标记一下。

 

  pyjs都属于解释性语言,无须编译(代码编译成机器码二进制),代码本身是文本,用解释器逐行读代码、解释运行代码。相较于编译性语言(vbcc++语言),解释性语言跨平台较好,只要在各平台安装相应版本的解释器就行了。

 

  比较pyjs的话,网页浏览器就可作js的解释器,Dreamweaver可作编辑器;而py官方的解释器有命令行下运行的pythonipython,第3方的集成环境ide(集成编辑、解释、调试)代表有pycharm,还有一个ideAnaconda Navigator;安装python时,我直接安装的Anaconda Navigator,因其包含了python解释器。

 

  今天开始,小结python语言的基本语法,顺便谈谈和JavaScript的区别,pythonJavaScript下面简写pyjs,作为py初学者,理解粗浅,不喜勿喷。

 

  说基本语法之前,先说说py的格式要求,py的格式要求非常严格,举个例子你就明白有多么令人发指,比如说,一条正常的语句print(“hello”),没有顶着最左边,立马报错,unexpected indent(非期望的缩进),是不是很变态!py格式严格要求缩进,同时语法里省略了如js代码段的大括号{}和语句结束的分号。

 

  Python语言如今大热,苛刻的格式要求没有吓退程序员,py自然有其独到的地方,据说(还没太多体会)是因为开源,众人拾柴火焰高,从91年至今,大家不断完善解释器,标准库和第三方库。引用教程中原话:python拥有一个强大的标准库,标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML 处理 等额外的功能,Python 社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能覆盖科学计算、人工智能、机器学习、Web 开发、数据库接口、图形系统多个领域。扯远了,这些还没来得及深入学习,以后聊。

 

  今天先小结下与变量有关的内容,涉及变量声明(或定义)、数据类型。

 

  变量是学程序语言第一个要接触的东西,相同的是jspy都不需要指定变量的数据类型,变量类型由赋值的数据类型决定,理论上变量存储的数据类型是可变的,但一般一个变量存储的数据类型最好是一种类型。

 

  js声明变量需要用var关键字,可以先声明再赋值、也可以声明同时赋值,如var a=100,甚至不用var,直接赋值(这种写法只在面试题里看到过,在函数内部用一个未var声明的变量,如a=100,这种写法,变量会在全局创建,属于全局变量,或修改外面的全局变量)。py定义变量(不叫声明)的方法更绝,直接变量名赋值即定义变量,如a=100,不需要其他关键字。


  关于数据类型,py有数字(int整型和float浮点)、字符串(str)、布尔(bool)、列表(list)、元组(tuple)、字典(dict),js不同的是没有元组,py的列表在js叫数组,字典为json。至于对象概念,暂时还没看这部分内容,先不谈。说明下py的元组,如元组(1,2,3)小括号包着,其数据是不可修改的。具体的列表、元组、字典和字符串后面小结。

 

  说到变量,还得说说数据引用,

 

  js中谈到对象时有一个引用问题,如数组对象,变量与数组对象的关系是一种引用关系,如果有多个变量引用同一数组对象,用数组方法修改数组数据时,多个变量与该数组的引用关系没有变,但数据同时在变。在js中只有对象才有这种引用关系,虽然js也号称一切都是对象,但比如数字、字符串、布尔这些类型,js称其为原始类型的数据,不存在引用关系,数据是原地保存的,没有强调变量保存的是数据的内存地址,只有引用关系才保存其内存地址,如Object、Array、Function等。

 

  Py虽然结果是一样的,但说法不一样(理解就好)。在py中,数据分数字型(数字、布尔和complex)和非数字型(字符串、元组、列表、字典),还有一种分法,数字、布尔、complex、字符串及元组属于不可变类型(内存中的数据不能被修改),列表、字典属于可变类型(有方法可以对其修改)。与js不同的是,所有数据与变量的关系都是引用关系,就算是一个数字数据,如a=100b=100,用ida)、idb)可以查询到变量ab保存的100这个数据的内存地址是一样,现在不理解这种设计有什么意义?因为100就是100,如果把100改成200200的内存地址肯定跟100不一样,但对于可变类型的数据说就不同,如一个数组【1,2,3】,如果ab变量同时引用,用数组方法如append()增加一个元素变成【1,2,3,4】,数据【1,2,3】和【1,2,3,4】的内存地址不会发生变化,这样ab变量引用的数据都变成【1,2,3,4】,这样才有意义。

 

  关于py数据的引用关系,说了一堆自己的理解,不管怎样,记住py中,数据和变量的关系就是引用关系,不管是数字还是数组!用赋值语句改变的是引用关系,只有用对象的方法修改数据才不会打破引用!

mygod | 阅读全文 | 回复(0) | 引用通告 | 编辑
发表评论:
请稍候,载入中。。。
公告
请稍候,载入中。。。
时间记忆
请稍候,载入中。。。
最新日志
请稍候,载入中。。。
最新评论
请稍候,载入中。。。
最新回复
请稍候,载入中。。。
我的好友
我的相册
站点信息
请稍候,载入中。。。
生活因感动而精彩,理想在创造中放飞
Powered by Oblog.