V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Pzqqt  ›  全部回复第 1 页 / 共 2 页
回复总数  34
1  2  
以下内容摘自《流畅的 Python 》第 11 章“接口:从协议到抽象基类”的延伸阅读

Python 是弱类型语言吗

由于缺少统一的术语,讨论语言类型方面的话题时有时会让人不明其意。有些人(例如扩展阅读中提到的 Bill Venners 对 Guido 的访谈)说 Python 是弱类型语言,把 Python 与 JavaScript 和 PHP 归为一类。讨论类型时,最好考虑两条不同的坐标线。

强类型和弱类型

如果一门语言很少隐式转换类型,说明它是强类型语言;如果经常这么做,说明它是弱类型语言。Java 、C++ 和 Python 是强类型语言。PHP 、JavaScript 和 Perl 是弱类型语言。

静态类型和动态类型

在编译时检查类型的语言是静态类型语言,在运行时检查类型的语言是动态类型语言。静态类型需要声明类型(有些现代语言使用类型推导避免部分类型声明)。Fortran 和 Lisp 是最早的两门语言,现在仍在使用,它们分别是静态类型语言和动态类型语言。

强类型能及早发现缺陷。

下面几例体现了弱类型的不足:

```javascript
// 这些是 JavaScript 代码(在 Node.js v0.10.33 中做了测试)
'' == '0' // false
0 == '' // true
0 == '0' // true
'' < 0 // false
'' < '0' // true
```

因为 Python 不会自动在字符串和数字之间强制转换,所以在 Python3 中,上述 == 表达式的结果都是 False (保留了 == 的意思),而< 比较会抛出 TypeError 。静态类型使得一些工具(编译器和 IDE )便于分析代码、找出错误和提供其他服务(优化、重构,等等)。动态类型便于代码重用,代码行数更少,而且能让接口自然成为协议而不提早实行。

综上,Python 是动态强类型语言。“PEP 484—TypeHints”( https://www.python.org/dev/peps/pep-0484/)无法改变这一点,但是 API 作者能够添加可选的类型注解,执行某种静态类型检查。
345 天前
回复了 abcfreedom 创建的主题 Android note12turbo 刷哪个系统比较靠谱
@fredweili #43 是的,xiaomi.euMIUI.eu 一样。
347 天前
回复了 abcfreedom 创建的主题 Android note12turbo 刷哪个系统比较靠谱
不介意 MIUI 的话:
- 如果有 Google 服务需求,推荐 MIUI.eu 。优点:基于国内版固件(但标识为国际版),更新及时,品质可靠,口碑也不错,无广告,没有小米应用商店,自带超级壁纸,有轻度的自定义功能(比如:隐藏状态栏图标之类的),绝大多数系统 app 都允许冻结(包括浏览器、系统更新);缺点我暂时没想到,我已经连续用了快半年了。
- 如果非常在意隐私的话,推荐欧版( EEA )。
- 无论如何,不要尝试任何第三方开发者的官改 ROM ,特别是国内开发者的付费官改 ROM (参考几个月前的远程格机事件)。
如果是 AOSP 的话:
- AOSPA 和 SK 的 AOSP 都值得推荐,维护者水平很高,更新也稳定,但要注意 AOSPA 不支持 32 位 app 。
- 不推荐 EvolutionX ,一是这个项目口碑一直不好,二是维护者整活频繁。
- 其他的 AOSP ROM 的话,自己尝试。
https://pzqqt.github.io/
我的 blog 是基于 PureCSS 的示例模板改的,足够简洁。😂
2021-09-28 09:58:02 +08:00
回复了 MiketsuSmasher 创建的主题 Python Python 类方法的装饰器问题
@weyou #6 @MiketsuSmasher 此乃正解,不过把 valid_before_logout 定义在 Account 类里边也是可以的,但不能加 staticmethod 装饰器(此时 valid_before_logout 既不是类方法也不是实例方法,它可以在外部通过类名直接调用,但不与类交互更不与实例交互,相当于类属性)。

这样会带来一个新的问题:如果你要继承 Account 类并重写被 valid_before_logout 装饰过的方法,除非显式调用超类方法或着重新装饰该方法,不然装饰器会失效。举例:

....class B(Account):
........def signout(self):
............self._is_valid = False
....b = B()
....b._is_valid # True
....b.signout()
....b._is_valid # False
....b.signout() # 此时应该触发异常, 但并没有, 因为该方法已经不再被 valid_before_logout 装饰
2021-08-14 09:10:37 +08:00
回复了 Macv1994 创建的主题 Python 关于字典的操作,求一个较好的解决方案
等等,你这是列表啊,那先把 err_data 和 new_data 转为字典吧,`id`做键,`data`做值。
2021-08-14 09:08:01 +08:00
回复了 Macv1994 创建的主题 Python 关于字典的操作,求一个较好的解决方案
python 2 或 python 3.5 以下的版本:
```python
result = dict(ChainMap(err_data, new_data))
```

python 3.5 及以上版本:
```python
result = {**err_data, **new_data}
```

python 3.9 及以上版本:
```python
result = err_data | new_data
```
500G 固态,给 C 盘分了 90G,除必要软件外其他软件都安装在其他分区,因为是电脑预装的原版系统所以也没有做太多的清理,日常剩余 20G 左右。
如果你装了 PC 版微信而且经常使用的话,一定要记得在微信设置中把文件管理目录改到其他分区,因为 PC 版微信会自动保存所有聊天记录中的图片、视频和文件,即使你从来都没有点开看过,而且这个空间占用是没有上限的,使用几个月后空间占用 10 多个 G 再正常不过。
2021-03-15 09:40:10 +08:00
回复了 maloneleo88 创建的主题 Python 有什么手机 APP 可以跑起来 py 文件吗? IOS、Android 都可以。
@maloneleo88 #20 Android 系统自带的文件( com.google.android.documentsui )可以管理 Termux 的 home 目录 ,不过某些国产 Rom 默认会把这个 app 禁用或者阉割了(比如 MIUI ),你需要手动启用它。
https://ww1.sinaimg.cn/large/006f6qwbly1gokcdbk50zj30g00zkwfa.jpg
2021-01-19 11:46:47 +08:00
回复了 ii55dd 创建的主题 程序员 除了 csdn、blog 园、简书、知乎,还有哪些可以写写的地方?
127.0.0.1
2021-01-11 09:37:09 +08:00
回复了 iwukong 创建的主题 浏览器 360 浏览器开始不停弹广告了
有一次给同事的电脑装 Chrome 于是用同事在用的 360 浏览器打开 Chrome 官网准备下载 但是显示的页面跟我印象中的 Chrome 官网完全不一样 是全屏灰底白字那种 我感觉有点不对劲 于是 F12 没想到 360 浏览器竟然添加了一个满屏元素覆盖原有页面 试图阻止用户下载安装 Chrome 从此对 360 系好感全无
2020-10-16 10:00:19 +08:00
回复了 Hlianbobo 创建的主题 Python 如何透过现象看本质,真正理解“类”这个概念?
曾经我也沉迷于函数式编程无法自拔 看了好多资料都没法完全理解面向对象的编程思想
直到有一天在网上受到高人指点 看到这么一段代码 瞬间茅塞顿开
![]( https://www.png8.com/imgs/2020/10/55857f64f52a9d83.jpg)
2020-09-22 17:28:45 +08:00
回复了 blackbookbj 创建的主题 Android 有没有安卓的支持 office, pdf 等格式 d 额文档查看器的程序
MIUI 内置的小米文档查看器 word excel ppt pdf 都支持打开
优点:体积小 功能单一 精简 无广告
缺点:只能打开不能编辑(尝试编辑时会提示你安装完整版 WPS )不支持多种字体(文件内所有字体都以系统字体显示)
在[APKMirror]( https://www.apkmirror.com/)搜"WPS"就能找到
如果你有编辑文件的需要的话 还是推荐[Microsoft Office]( https://www.apkmirror.com/apk/microsoft-corporation/office-mobile-2/)
```python
l = [{'姓名':'张三','体重':76,'UpdateTime':'aaa'},
{'姓名':'张三','体重':76,'UpdateTime':'bbb'},
{'姓名':'张三','体重':76,'UpdateTime':'ccc'},
{'姓名':'张三','体重':76,'UpdateTime':'xxx'}]

d = {}
for i in range(len(l)):
d = {**d, **l[i]}

# d == {'姓名': '张三', '体重': 76, 'UpdateTime': 'xxx'}
```
@xmi 参考 38 楼 病毒是藏在页面源码里的 在页面源码下方有一段恶意 VBScript 代码 可以看出这段代码只对 Windows 系统有影响
@justrand 访问 http://101.201.76.232 之后返回 Nginx 欢迎页面 然后火绒报毒。。。
2019-12-17 10:54:28 +08:00
回复了 Removable 创建的主题 分享发现 友情提醒: bandizip 的 Windows 版即将采取收费去广告模式
@forgottencoast 如果压缩包里只有一个文件夹 则直接将这个文件夹解压到当前目录 如果压缩包中有多个文件或文件夹 则会自动在当前目录创建一个文件夹(以压缩包文件名命名)然后将压缩包中的内容解压到该文件夹中
好处就是避免了当前文件夹解压出了一大堆文件的囧状
2019-12-12 09:12:41 +08:00
回复了 conanca 创建的主题 Linux 2019 版“完全用 Linux 工作”
装了双系统 win10 1809 + Ubuntu 18.04 日常工作使用用 win10 搞开发用 Ubuntu
Ubuntu 给我的感触只有两个字:卡和慢
都说 win10 bug 多 以及令人诟病的蓝屏 然而装了 MSDN 的官方 win10 1809 镜像之后用了大半年 只遇到过一次蓝屏(估计是系统休眠功能的 bug )而且并没有遇到过非常严重和明显的 bug
而 Ubuntu 呢 打开 Chromium 我可能需要等一分多钟 还可能会碰到各种插件崩溃 在 Android 内核源码目录执行一条 git status 我可能需要等 5 分钟 用 top 看了下 发现 git 的磁盘 I/O 速度极慢 领导发给我一个表格 我用 LibreOffice 打开 然后系统就卡死了 鼠标无法移动 时钟数字也不会变化了 等了 5 分钟仍然没有变化 没办法只能 Alt+F1 强制杀死桌面进程
win10 倒是很少遇到卡顿的情况 就算卡了至少鼠标有反馈 而且大部分情况下等不了多久系统会自己反应过来 不想等的话也可以随时调出任务管理器结束进程 而 Ubuntu 卡了那就是真的卡了 如果不知道如何解决 那就只有强制重启电脑了
你可以说我的电脑配置差 也可以说我不配用 Linux
2019-12-01 11:09:34 +08:00
回复了 liuweicheng 创建的主题 Python Python 字典合并问题
可以阅读这篇文章
http://148.70.149.207/entry/6
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5447 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 46ms · UTC 08:09 · PVG 16:09 · LAX 00:09 · JFK 03:09
Developed with CodeLauncher
♥ Do have faith in what you're doing.