抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

关于Python

  • 语言哲学: 简洁

  • 类型:解释型语言、动态语言、面向对象(一切皆对象)

  • 缺点:

    1. 速度慢
    2. 代码不能加密
  • 语言思想:

    1. 一切皆对象
    2. 函数是一等公民

解释器

CPython

默认解释器。

PyPy

目标是执行速度,采用JIT技术,对python代码进行动编译。
但是与CPython不同。 PyPy VS CPython

Jython

Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

命令行模式 & 交互模式

命令行模式

┌──────────────────────────────────────┐
│Command Prompt - □ x │
├──────────────────────────────────────┤
│Microsoft Windows [Version 10.0.0] │
│(c) 2015 Microsoft Corporation. All rights reserved. │
│ │
│C:> _ │
│ │
└──────────────────────────────────────┘

可以切换到文件所在目录下,然后输入 python 文件名.py 来执行python文件

Python交互模式

┌────────────────────────────────────────┐
│Command Prompt - python - □ x │
├────────────────────────────────────────┤
│Microsoft Windows [Version 10.0.0] │
│(c) 2015 Microsoft Corporation. All rights reserved. │
│ │
│C:> python │
│Python 3.7 … on win32 │
│Type “help”, … for more information. │
│>>> 100 + 200 │
│300 │
│>>> _ │
│ │
└────────────────────────────────────────┘

输入 python 进入交互模式, 输入 exit()quit() 退出交互模式

文件名

  • 扩展名:.py
  • 文件名:英文字母、数字、下划线

直接运行.py文件

  • Win
  • Linux
  • Mac

前提:

  1. 在hello.py文件的第一行加上一个特殊的注释 #!/usr/bin/env python3 , 如
    1
    2
    3
    #!/usr/bin/env python3

    print("Hello World!")
  2. 通过命令给hello.py文件执行权限
    1
    $ chmod a+x hello.py

中文编码

Python2 默认编码格式是:ASCII,使用中文会出错
解决方法:在文件开头加入 # -*- coding: UTF-8 -*-# coding=utf-8

1
2
3
4
#!/usr/bin/python
# -*- coding: UTF-8 -*-

print("放码过来")

Python3 默认编码格式是:UTF-8,所以无需指定编码格式
注意:py文件需要存储格式为 UTF-8

1
2
3
#!/usr/bin/env python3

print("放码过来")

但最好还是加上

1
2
3
4
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

print("放码过来")

python的一切皆对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 示例如下
a=2019
b="一切皆对象"
print(type(2019))
print(type(int))
print(type(b))
print(type(str))

class Student:
pass

stu = Student()
print(type(stu))
print(type(Student))
print(int.__bases__)
print(str.__bases__)
print(Student.__bases__)
print(type.__bases__)
print(object.__bases__)
print(type(object))
print(type(type))

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
<class 'int'>				 # 2019是由int这个类创建的实例
<class 'type'> # int这个类是由type这个类创建的实例
<class 'str'> # 同上
<class 'type'>
<class '__main__.Student'> # stu是类Student创建的实例
<class 'type'> # 类Student是由type这个类创建的实例
(<class 'object'>,) # 类int的基类是object这个类
(<class 'object'>,) # 同上
(<class 'object'>,) # 同上
(<class 'object'>,) # 重点:类type的基类也是object这个基类
() # 重点:类object没有基类
<class 'type'> # 难点:类object是由类type创建的实例
<class 'type'> # 难点:类type是由type类自身创建的实例

一切皆对象

对于上面图片的解读如下:

  1. object是一切对象:list、str、dict、tuple的基类,同时object是type的实例
  2. 类type是自身的实例,同时type也继承自object类
  3. 由结论1和结论2,得出一切皆对象,同时一切皆继承自object类

类object是一切对象的基类
类object类type的实例

类type继承自类object
类type类type的实例

一切皆对象,一切皆继承自object类

哔哔