[TOC]
- 大佬
- Guido van Rossum
- Luciano Ramalho [Fluent-Python]
- Julien Danjou [Blog],[代表作:The Hacker's Guide To Python]
- Doug Hellmann [Python 3 Module of the Week], [Book: The Python Standard Library by Example]
- 资源
[Desc of __name__
in FreeCodeCamp]
__name__
是 Python 的一个变量,如果脚本是主动执行的,那么 __name__
的值就是 __main__
,如果脚本是被 import 导入然后执行的,那么 __name__
的值就是脚本的名称。
# script1
import script2
print(__name__)
print(script2.__name__)
# script2
print(__name__)
"""
执行 script2,得到结果:
script2
__main__
script2
"""
if __name__ == "__main__":
pass
这就解释了,为什么脚本在被导入的时候,上面的代码不会执行的原因。有了 __name__
,就可以在脚本中进行代码测试而不污染 import。
Python 所有的 built-in functions:
Python has an eval() function which evaluates a string of Python code:
assert eval("2 + 3 * len('hello')") == 17
eval 函数很危险:[Eval really is dangerous]
Consider a situation where you are using a Unix system (macOS, Linux etc) and you have imported the os
module. The os module provides a portable way to use operating system functionalities like reading or writing to a file.
If you allow users to input a value using eval(input())
, the user may issue commands to change file or even delete all the files using the command: os.system('rm -rf *')
.
- 速度慢:更关注编程速度,而不是运行速度
- 不支持多核多线程:Python 仅支持单核的多线程
Python 很难进行打包部署
备忘几个不常用到的运算符
运算符 | 解释 | Demo |
---|---|---|
** | 幂 | 2**10 == 1024 |
/ | 除 (结果一定是小数 python3) | 8 / 2 == 4.0 |
// | 取整除(向下取整) | 9//2 == 4 |
运算符 | 解释 | Demo |
---|---|---|
<> | 不等于 | 2 <> 1 |
10 <= num <= 100 | 链式比较 |
运算符 | 解释 | Demo |
---|---|---|
& | 按位与 | |
| | 按位或 | |
^ | 按位异或 (相同为0,不同为1) | |
~ | 按位取反 | |
<< | 左移(地位补0) | 3 << 2 == 12 |
>> |
右移 | 15 >> 2 == 3 |
Python 不能通过 ++a
实现自增。
# C
int a = 1;
queue[++a] # == queue[2]
prinf("%d", a) # a == 2
# Python
a = 1
queue[++a] # == queue[2]
print(a) # 1
Pointer variable vs Reference variable
-
引用更像是一个贴纸,贴纸上写上内存地址空间的别名(非空),然后贴在这块地址空间上,是一次性的(不能重新赋值)
-
指针首先是一个指针变量,这个变量存储着一个地址空间,这个变量可以为空,也可以重新赋值
最通用的矢量图格式是 pdf 格式,不建议生成 svg 和 eps 格式的矢量图。
Write once. Deploy everywhere.
Write your apps in Python and release them on iOS, Android, Windows, MacOS, Linux, Web, and tvOS using rich, native user interfaces. Multiple apps, one codebase, with a fully native user experience on every platform.
-
Turn python cmd into GUI application: Gooey