位置: 编程技术 - 正文

Python 和 JS 有哪些相同之处(python和js哪个好)

编辑:rootadmin

推荐整理分享Python 和 JS 有哪些相同之处(python和js哪个好),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python和js哪个好,js跟python,python和js哪个好,python和javascript的区别,js与python哪个功能更强大,js跟python,js和python区别大不大,js与python哪个功能更强大,内容如对您有帮助,希望把文章链接给更多的朋友!

【嵌牛导读】Python 是一门运用很广泛的语言,自动化脚本、爬虫,甚至在深度学习领域也都有 Python 的身影。作为一名前端开发者,也了解 ES6 中的很多特性借鉴自 Python (比如默认参数、解构赋值、Decorator等),同时本文会对 Python 的一些用法与 JS 进行类比。不管是提升自己的知识广度,还是更好地迎接 AI 时代,Python 都是一门值得学习的语言。

【嵌牛鼻子】python与JS的相似之处

【嵌牛提问】python与JS有哪些相似呢?

【嵌牛正文】

数据类型

在 Python 中,最常用的能够直接处理的数据类型有以下几种:

数字[整数(int)、浮点型(float)、长整型(long)、复数(complex)]

字符串(str)

布尔值(bool)

空值(None)

除此之外,Python 还提供了列表[list]、字典[dict] 等多种数据类型,这在下文中会介绍。

类型转换与类型判断

与 JS 十分类似,python 也能实现不同数据类型间的强制与隐式转换,例子如下:

强制类型转换:

隐式类型转换:

此外写代码的时候经常会需要判断值的类型,可以 使用 python 提供的 type() 函数获取变量的类型,或者使用 isinstance(x, type) 来判断 x 是否属于相应的 type 类型。

有序集合类型

集合是指包含一组元素的数据结构,有序集合即集合里面的元素是是按照顺序排列的,Python 中的有序集合大概有以下几类:list, tuple, str, unicode。

list 类型

Python 中 List 类型类似于 JS 中的 Array,

tuple 类型

tuple 类型是另一种有序的列表,中文翻译为" 元组 "。tuple 和 list 非常类似,但是,tuple 一旦创建完毕,就不能修改了。

无序集合类型

dict 类型

Python 中的 dict 类型类似于 JS 中的 {} (最大的不同是它是没有顺序的), 它有如下特点:

查找速度快 (无论 dict 有 个元素还是 万个元素,查找速度都一样)

占用内存大 (与 list 类型相反)

dict 中的 key 不能重复

dict 中存储的 key-value 序对是没有顺序的

print d # {'a': 1, 'c': 3, 'b': 2} 可以看出打印出的序对没有按正常的顺序打出

set 类型

有的时候,我们只想要 dict 的 key,不关心 key 对应的 value,而且要保证这个集合的元素不会重复,这时,set 类型就派上用场了。set 类型有如下特点:

set 存储的元素和 dict 的 key 类似,必须是不变对象

set 存储的元素也是没有顺序的

Python 中的迭代

在介绍完 Python 中的有序集合和无序集合类型后,必然存在遍历集合的 for 循环。但是和其它语言的标准 for 循环不同,Python 中的所有迭代是通过 for ... in 来完成的。以下给出一些常用的迭代 demos:

索引迭代:

迭代 dict 的 value:

迭代 dict 的 key 和 value:

切片操作符

Python 提供的切片操作符类似于 JS 提供的原生函数 slice()。有了切片操作符,大大简化了一些原来得用循环的操作。

列表生成器

如果要生成 [1x1, 2x2, 3x3, ..., x] 怎么做?方法一是循环:

Python 和 JS 有哪些相同之处(python和js哪个好)

但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的 list:

# 把要生成的元素 x * x 放到前面,后面跟 for 循环,就可以把 list 创建出来

[x * x for x in range(1, )]

# [1, 4, 9, , , , , , , ]

列表生成式的 for 循环后面还可以加上 if 判断(类似于 JS 中的 filter() 函数),示例如下:

[x * x for x in range(1, ) if x % 2 == 0]

# [4, , , , ]

for 循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。

[m + n for m in 'ABC' for n in '']# ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

Python 函数

默认参数

JS 中 ES6 的 默认参数正是借鉴于 Python,用法如下:

可变参数

类似于 JS 函数中自动识别传入参数的个数,Python 也提供了定义可变参数,即在可变参数的名字前面带上个 * 号。

Python 解释器会把传入的一组参数组装成一个 tuple 传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。

常用高阶函数

Python 中常用的函数 (map、reduce、filter) 的作用和 JS 中一致,只是用法稍微不同。

map 函数: 接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

reduce 函数: 接收一个函数 f 和一个 list(可以接受第三个值作为初始值),reduce() 对 list 的每个元素反复调用函数 f,并返回最终结果值。

filter 函数: 接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter() 根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新 list。

匿名函数

和 JS 的匿名函数不同的地方是,Python 的匿名函数中只能有一个表达式,且不能写 return。拿 map() 函数为例:

关键词 lambda 表示匿名函数,冒号前面的 x 表示函数参数,可以看出匿名函数 lambda x: x* x实际上就是:

闭包

之前写过一些关于 JS 闭包的文章,比如 深入浅出JavaScript之闭包(Closure)、以及 读书笔记-你不知道的 JavaScript (上),Python 中闭包的定义和 JS 中的是一致的即:内层函数引用了外层函数的变量,然后返回内层函数。下面来看下 Py 中闭包之 for 循环经典问题:

老问题了,f1(), f2(), f3() 结果不应该是 1, 4, 9 吗,实际结果为什么都是 9 呢?

原因就是当 count() 函数返回了 3 个函数时,这 3 个函数所引用的变量 i 的值已经变成了 3。由于 f1、f2、f3 并没有被调用,所以,此时他们并未计算 i*i,当 f1 被调用时,i 已经变为 3 了。

要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。代码修改如下:

方法一: 可以理解为创建了一个封闭的作用域,i 的 值传给 j 之后,就和 i 没任何关系了。每次循环形成的闭包都存进了内存中。

方法二:思路比较巧妙,用到了默认参数 j 在函数定义时可以获取到 i 的值,虽然没有用到闭包,但是和方法一有异曲同工之处。

decorator 装饰器

ES6 的语法中的 decorator 正是借鉴了 Python 的 decorator。decorator 本质上就是 一个高阶函数,它接收一个函数作为参数,然后返回一个新函数。

那装饰器的作用在哪呢?先上一段日常项目中用 ts 写的网关代码:

可以看出使用装饰器可以极大地简化代码,避免每个函数(比如日志、路由、性能检测)编写重复性代码。

回到 Python 上,Python 提供的 @ 语法来使用 decorator, @ 等价于 f = decorate(f)。下面来看看 @log() 在 Python 中的实现:

面向对象编程

面向对象编程是一种程序设计范式,基本思想是:用类定义抽象类型,然后根据类的定义创建出实例。在掌握其它语言的基础上,还是比较容易理解这块知识点的,比如从下面两种写法可以看出不同语言的语言特性间竟然有如此多的共性。

es6: (附:本文的主题是 python,所以只是初略展示下 js 中类的定义以及实例的创建,为了说明写法的相似性)

Python: (核心要点写在注释中)

继承

child 属于 Student 类,Student 类属于 People 类,这就引出了继承: 即获得了父类的方法属性后又能添加自己的方法属性。

可以看到子类在父类的基础上又增加了 grade 属性。我们可以再来看看 s 的类型。

可以看出,Python 中在一条继承链上,一个实例可以看成它本身的类型,也可以看成它父类的类型。

总结

以上所述是小编给大家介绍的Python 和 JS 有哪些相同之处,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

Python3安装Scrapy的方法步骤 本文介绍了Python3安装Scrapy的方法步骤,分享给大家,具体如下:运行平台:WindowsPython版本:Python3.xIDE:Sublimetext3一、Scrapy简介Scrapy是一个为了爬取网站

Python3 操作符重载方法示例 基础知识实际上,运算符重载只是意味着在类方法中拦截内置的操作……当类的实例出现在内置操作中,Python自动调用你的方法,并且你的方法的返回

Python 内置函数memoryview(obj)的具体用法 memoryview()函数返回给定参数的内存查看对象(Momoryview)。语法memoryview语法:memoryview(obj)参数说明:obj--对象返回值:返回元组列表。英文文档:classmemoryvie

标签: python和js哪个好

本文链接地址:https://www.jiuchutong.com/biancheng/375422.html 转载请保留说明!

上一篇:深入理解Python分布式爬虫原理(python的理解)

下一篇:Python3安装Scrapy的方法步骤(python3安装pygame)

  • 税收收入包括哪些形式
  • 商品流通企业税种有哪些
  • 非税收入包括哪些来源
  • 研发费用明细账
  • 公司购车购置税有优惠吗
  • 小规模增值税附加税税率
  • 资产负债表应交税费期末余额是什么意思
  • 坏账准备递延所得税资产怎么算
  • 如何开商业承兑汇票业务
  • 新准则 开办费
  • 事业单位个税可以抵扣吗
  • 预付款如何扣除
  • 18年补交17年城建税会计分录
  • 进项税额有哪些明细科目
  • 营改增建筑业税率是多少
  • 外经证预交增值税和专管员
  • 支票发生退票
  • 关于燃油消费税征收范围及税率
  • 出租房产如何交土地使用税
  • 信息技术服务费发票
  • php提高性能
  • falogincn修改无线密码
  • php防止网站被攻击怎么办
  • 工程事故赔偿协议书怎么写
  • live updater
  • php实现搜索的方式
  • php link指令
  • php foo
  • 记账凭证和会计分录的区别
  • 进项税额准予抵扣的有哪些
  • 地税没申报罚款多少
  • 固定资产闲置能报废吗
  • 餐饮业开具增值税专用发票
  • spring bootcsdn
  • 谈谈社会公德普通话三分钟
  • 交易性金融资产属于流动资产
  • 零申报的申报表怎么填
  • 财务报表季报应付职工薪酬是指三个月工资累计还是
  • 织梦网站停止使用了还侵权吗
  • Python中input输入多行文本
  • 电子发票报销需要签字吗
  • 增值税发票如何作废流程
  • 增值是指哪几点
  • 低值易耗品如何摊销
  • 企业所得税是指利润的税吗
  • 计提坏账准备和确认坏账损失
  • 税控盘的进项税在哪里申报
  • 电商刷单返现如何做账务处理合适?
  • 调整以前年度费用如何做分录
  • 收到境外支付的咨询费免税吗
  • 其他收益和其他综合收益区别
  • 居民企业只就其境内全部所得纳税
  • 收到保险理赔款计入什么科目
  • 水果店的账务处理
  • 给职工发放的米面油记入什么
  • 新公司怎样
  • 如何快速找到注册的软件
  • 微软停止对xp的操作
  • linux如何快速统计文件个数
  • windows8.1安装windows7
  • win7 64位纯净版图标变成了一样该怎么办?win7旗舰版图标变成一样的解决方法
  • javascript入门教程
  • [置顶]公主大人接下来是拷问时间31
  • dos批命令
  • 滚动的纸箱
  • 支付宝是怎么写
  • javascript总结笔记
  • 工具类的作用
  • 重新加载activity
  • js优化性能
  • 电子税务局 安徽
  • 天津税务局投诉举报咨询电话
  • 电子税务局如何签订三方协议扣款
  • 小微企业契税政策
  • uk怎么查看发票开票额度
  • 厦门市地方税务局市稽查局关于规范稽查有关规定
  • 如何在广东省电子税务局开发票
  • 计算车辆购置税公式
  • 花店会计主要做什么
  • 山西省网上营业执照申请官网?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设