XingYun blog
  • JS基础

    • 图解js原型链
    • JS Event Loop
    • 对象的底层数据结构
    • 让你的JavaScript代码简单又高效
    • 函数参数按值传递
    • 判断数据类型
    • 浮点数精度问题和解决办法
    • 常用方法snippet
    • 实现Promise
    • 防抖和节流
    • 巧用sort排序
  • CSS && HTML

    • CSS也需要性能优化
    • class命名规范
    • em、px、rem、vh、vw 区别
    • CSS揭秘阅读笔记
  • 浏览器

    • 浏览器是如何渲染页面的
    • 重排和重绘
    • BOM浏览器对象模型
    • DOM事件
    • 浏览器存储
  • 数据结构

    • JS实现链表
    • JS实现栈与栈应用
    • JS实现常见排序
    • 哈夫曼编码
    • MD5算法
  • vue原理浅析

    • Vue虚拟dom与Diff算法
    • 前端打包文件的缓存机制
    • vue数组为什么不是响应式
    • v-for为什么不能用index做key
  • 前端工程化

    • 浏览器是如何渲染页面的
    • 前端打包需要gzip压缩吗
    • 前端打包文件的缓存机制
    • webpack loader和plugin
  • 轮子&&组件库

    • 实现水波浪进度球
  • 文字转语音mp3文件
  • 文件上传前后端实现
  • moment.js给定时间获取自然月、周的时间轴
  • 实现文件上传功能
  • 批量下载照片
  • leaflet改变坐标原点
  • 网络

    • 有了MAC地址 为什么还需要IP地址
    • 为什么IP地址老是变
    • 我们为什么需要IPV6
    • TCP与UDP
  • 计算机组成原理

    • ASCII、Unicode、UTF-8和UTF-16
  • VSCode

    • VSCode图片预览插件 Image preview
    • rsync:linux间的高效传输工具

XingYun

冲!
  • JS基础

    • 图解js原型链
    • JS Event Loop
    • 对象的底层数据结构
    • 让你的JavaScript代码简单又高效
    • 函数参数按值传递
    • 判断数据类型
    • 浮点数精度问题和解决办法
    • 常用方法snippet
    • 实现Promise
    • 防抖和节流
    • 巧用sort排序
  • CSS && HTML

    • CSS也需要性能优化
    • class命名规范
    • em、px、rem、vh、vw 区别
    • CSS揭秘阅读笔记
  • 浏览器

    • 浏览器是如何渲染页面的
    • 重排和重绘
    • BOM浏览器对象模型
    • DOM事件
    • 浏览器存储
  • 数据结构

    • JS实现链表
    • JS实现栈与栈应用
    • JS实现常见排序
    • 哈夫曼编码
    • MD5算法
  • vue原理浅析

    • Vue虚拟dom与Diff算法
    • 前端打包文件的缓存机制
    • vue数组为什么不是响应式
    • v-for为什么不能用index做key
  • 前端工程化

    • 浏览器是如何渲染页面的
    • 前端打包需要gzip压缩吗
    • 前端打包文件的缓存机制
    • webpack loader和plugin
  • 轮子&&组件库

    • 实现水波浪进度球
  • 文字转语音mp3文件
  • 文件上传前后端实现
  • moment.js给定时间获取自然月、周的时间轴
  • 实现文件上传功能
  • 批量下载照片
  • leaflet改变坐标原点
  • 网络

    • 有了MAC地址 为什么还需要IP地址
    • 为什么IP地址老是变
    • 我们为什么需要IPV6
    • TCP与UDP
  • 计算机组成原理

    • ASCII、Unicode、UTF-8和UTF-16
  • VSCode

    • VSCode图片预览插件 Image preview
    • rsync:linux间的高效传输工具
  • 开发环境
  • 网络请求
  • python与JavaScript异同
    • Python 与 JavaScript 的异同
      • 一、数据类型
      • 二、 声明变量
      • 二、python 用缩进来区分代码块
      • 三、高阶函数
      • 四、模块导入
  • 了解机器学习
  • 爬取豆瓣Top250
  • 表格处理pandas
  • python
XingYun
2021-12-28
目录

python与JavaScript异同

# Python 与 JavaScript 的异同

# 一、数据类型

python 和 js 都是动态数据类型

但是需要注意的是,python 连接时并不会自动转换类型。

str = '123' + 123
会直接报错
TypeError: cannot concatenate 'str' and 'int' objects
1
2
3

正确做法是手动转换类型后再连接

str = '123' + str(123)
1

JS的对象和python的字典dict基本等价

# 二、 声明变量

python初始化变量不需要关键字直接赋值即可如: n = 1

命名变量格式:
python: 使用 snake_case 命名样式, 下划线区分单词
JavaScript: 使用 snakeCase 驼峰命名样式, 首字母大写区分单词

# 二、python 用缩进来区分代码块

和 js 用{}区分作用域不同 python 用的是缩进(这个点 python 被吐槽麻了, 因为CV代码时,还得处理缩进)

# Python
def get_sum(num1, num2):
    sum = 0
    if (num1 > 0)
        sum += num1
    return sum + num2
1
2
3
4
5
6

如上:get_sum 函数和 if,都是用缩进来控制生效范围

# 三、高阶函数

python 和 js 都有 map、reduce、sort 等高级函数,且用法近似。 两者都有闭包且表现几乎一致,python 对闭包的依赖比 js 小一些

python 有个自己独特的东西-函数装饰器

和 js 类似,在 python 里由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。

def now():
    print('2021-12-30')
f = now
f()
2021-12-30
1
2
3
4
5

现在,假设我们要增强 now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改 now()函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。
本质上,decorator 就是一个返回函数的高阶函数。所以,我们要定义一个能打印日志的 decorator,可以定义如下:

def log(func):
    def wrapper(*args, **kw):
        print('call %s():' % func.__name__)
        return func(*args, **kw)
    return wrapper
1
2
3
4
5

观察上面的 log,因为它是一个 decorator,所以接受一个函数作为参数,并返回一个函数。我们要借助 Python 的@语法,把 decorator 置于函数的定义处:

@log
def now():
    print('2021-12-30')
1
2
3

调用 now()函数,不仅会运行 now()函数本身,还会在运行 now()函数前打印一行日志:

now()
call now():
2021-12-30

把@log 放到 now()函数的定义处,相当于执行了语句:
now = log(now)

# 四、模块导入

JavaScript 模块必须显式导出。在 Python 中,所有模块均可导入。
JavaScript 具有默认导出的概念。Python 没有。

// javascript
import { myvar, myfunc } from './mymodule'
console.log(myvar)
myfunc()

// 分模块
import { myvar, myfunc } from './mymodule'
console.log(myvar)
myfunc()
1
2
3
4
5
6
7
8
9
# python
import mymodule
mymodule.myfunc()

# 分模块
from mymodule import myvar, myfunc
print myvar
myfunc()

1
2
3
4
5
6
7
8
9
上次更新: 2023/04/05, 09:41:10
网络请求
了解机器学习

← 网络请求 了解机器学习→

最近更新
01
JavaScript-test
07-20
02
二维码的原理
07-20
03
利用ChatGPT优化代码
07-20
更多文章>
Theme by Vdoing | Copyright © 2021-2023 XingYun | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式