Skip to content

Latest commit

 

History

History
175 lines (115 loc) · 10.3 KB

File metadata and controls

175 lines (115 loc) · 10.3 KB

Python Cheetsheet

[TOC]

Python 大佬 和 Python 学习资源

Python 中的一些特殊变量

__name__

[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 所有的 built-in functions:

Built-in Functions
abs() delattr() hash() memoryview() set()
all() dict() help() min() setattr()
any() dir() hex() next() slice()
ascii() divmod() id() object() sorted()
bin() enumerate() input() oct() staticmethod()
bool() eval() int() open() str()
breakpoint() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()

eval()

[Python eval()]

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 仅支持单核的多线程

Python 打包与独立可执行文件

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 与 C 的语法差异

数值型 + 1

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

  • 引用更像是一个贴纸,贴纸上写上内存地址空间的别名(非空),然后贴在这块地址空间上,是一次性的(不能重新赋值)

  • 指针首先是一个指针变量,这个变量存储着一个地址空间,这个变量可以为空,也可以重新赋值

Matplotlib 绘制矢量图

最通用的矢量图格式是 pdf 格式,不建议生成 svg 和 eps 格式的矢量图。

Python Depolyment

[BeeWare]

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.

Python GUI

  • Turn python cmd into GUI application: Gooey

    image-20200828091512198