DAY1-初识python
一、python输出hello world !
所有程序都是从hello world!开始
print ("hello world!")
结果:
python(解释型)执行代码流程图:
后图解释了编译型语言与解释型语言的各自的执行流程
二、python的优缺点
优点:
- python的定位是“优雅”、“明确”、“简单”,所以python程序看上去总是简单易懂,初学者学python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序;
- 开发效率非常高,python有非常强大的第三方库,基本上你想通过计算机实现任何功能,python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造*;
- 高级语言————当你用python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节;
- 可移植性————由于它的开源本质,python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你
- 的所有python程序无需修改就几乎可以在市场上所有的系统平台上运行;
- 可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用c或c++编写,然后在你的python程序中使用它们;
- 可嵌入性————你可以把python嵌入你的c/c++程序,从而向你的程序用户提供脚本功能;
缺点:
- 速度慢,python 的运行速度相比c语言确实慢很多,跟java相比也要慢一些,因此这也是很多所谓的大牛不屑于使用python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用c运一个程序花了0.01s,用python是0.1s,这样c语言直接比python快了10倍,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数情况下python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用c去实现的;
- 代码不能加密,因为python是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用python来去实现;
- 线程不能利用多cpu问题,这是python被人诟病最多的一个缺点,gil即全局解释器锁(global interpreter lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,python的线程是操作系统的原生线程。在linux上为pthread,在windows上为win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核cpu平台上,由于gil的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨;
三、python解释器
当我们编写python代码时,我们得到的是一个包含python代码的以.py
为扩展名的文本文件。要运行代码,就需要python解释器去执行.py
文件。
由于整个python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写python解释器来执行python代码(当然难度很大)。事实上,确实存在多种python解释器。
cpython
当我们从python官方网站下载并安装好python 2.7后,我们就直接获得了一个官方版本的解释器:cpython。这个解释器是用c语言开发的,所以叫cpython。在命令行下运行python
就是启动cpython解释器。
cpython是使用最广的python解释器。教程的所有代码也都在cpython下执行。
ipython
ipython是基于cpython之上的一个交互式解释器,也就是说,ipython只是在交互方式上有所增强,但是执行python代码的功能和cpython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了ie。
cpython用>>>
作为提示符,而ipython用in [
序号
]:
作为提示符。
pypy
pypy是另一个python解释器,它的目标是执行速度。pypy采用jit技术,对python代码进行动态编译(注意不是解释),所以可以显著提高python代码的执行速度。
绝大部分python代码都可以在pypy下运行,但是pypy和cpython有一些是不同的,这就导致相同的python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到pypy下执行,就需要了解pypy和cpython的不同点。
jython
jython是运行在java平台上的python解释器,可以直接把python代码编译成java字节码执行。
ironpython
ironpython和jython类似,只不过ironpython是运行在微软.net平台上的python解释器,可以直接把python代码编译成.net的字节码。
小结:python的解释器很多,但使用最广泛的还是cpython。如果要和java或.net平台交互,最好的办法不是用jython或ironpython,而是通过网络调用来交互,确保各程序之间的独立性。
四、变量
声明变量
#_*_coding:utf-8_*_ name = "qiuping"
上述代码声明了一个变量,变量名为: name,变量name的值为:"qiuping"
变量定义的规则:
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
变量赋值:
五、字符编码
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)
ascii(american standard code for information interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ascii码最多只能表示 255 个符号。
计算机内存地址和为什么用16进制?
3、计算机中cpu运算也是遵照ascii字符集,以16、32、64的这样的方式在发展,因此数据交换的时候16进制也显得更好
4、为了统一规范,cpu、内存、硬盘我们看到都是采用的16进制计算
16进制用在哪里
1、网络编程,数据交换的时候需要对字节进行解析都是一个byte一个byte的处理,1个byte可以用0xff两个16进制来表达。通过网络抓包,可以看到数据是通过16进制传输的。
2、数据存储,存储到硬件中是0101的方式,存储到系统中的表达方式都是byte方式
3、一些常用值的定义,比如:我们经常用到的html中颜色表达,就是用的16进制方式,4个16进制位可以表达好几百万的颜色信息。
六、注释
当行注视:# 被注释内容
#name = "qiuping"
print("你好")
多行注释:""" 被注释内容 """
"""
这是被注释的内容
多行注释
"""
#name = "qiuping"
print("你好")
七、用户输入
#!/usr/bin/env python
#_*_coding:utf-8_*_
#name = raw_input("what is your name?") #only on python 2.x
name = input("what is your name?")
print("hello " + name )
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
# 将用户输入的内容赋值给 pwd变量
pwd = getpass.getpass("请输入密码:")
# 打印输入的内容
print(pwd)
上一篇: [日常] 编写HTTP接口文档