Python—入门Python一路通畅
一、Python的诞生很意外
python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。
二、应用领域
目前Python主要应用领域:
- 云计算: 云计算最火的语言, 典型应用OpenStack
- WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
- 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
- 系统运维: 运维人员必备语言
- 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
- 图形GUI: PyQT, WxPython,TkInter
1.1 编译型和解释型
编译型
一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
解释型
良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。但性能不如编译型。
1.2 动态语言和静态语言
动态类型语言
动态类型语言:是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。
静态类型语言
静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型。
1.3 强类型定义语言和弱类型定义语言
强类型定义语言
强类型定义语言:强制数据类型定义的语言。不经过强制转换,那么它就永远是这个数据类型了。
弱类型定义语言
弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
三、简述Python的安装流程
1、下载安装包
https://www.python.org/downloads/
2、安装
默认安装路径:C:\python27
3、配置环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
如:原来的值;C:\python27,切记前面有分号
Linux和Mac下自带。
四、Python入门
# 声明解释器
#!/usr/bin/env python
print "显示输出内容"
python不要声明数据类型,只要经过复制自带判断数据类型。
# 变量赋值
name = "Alex Li"
# 但是当出现中文时需要指定字符编码解析:字符编码UTF-8。
#_*_coding:utf-8_*_
1. 字符编码
ASCII : 语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。
GB2312 : 一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。
GBK1.0 : 收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。
GB18030: 取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、*文等主要的少数民族文字。
Unicode :万国码、每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536。注:此处说的的是最少2个字节,可能更多。
UTF-8 : 对Unicode编码的压缩和优化。将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),报错:ascii码无法表示中文。
#!/usr/bin/env python
## 指定编码类型为UTF-8
# -*- coding: utf-8 -*-
print "你好,世界"
2. 用户输入命令
明文输入
### python 2.x
name = raw_input("What is your name?")
### python 3.x
name = input("What is your name?")
print("Hello " + name )
密文输入
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
# 将用户输入的内容赋值给 name 变量
pwd = getpass.getpass("请输入密码:")
# 打印输入的内容
print(pwd)
3. 模块
#!/usr/bin/env python
# -*- coding: utf-8 -*-
### 导入的模块:sys
import sys
print(sys.argv)
#### 测试脚本输出
$ python test.py helo world
['test.py', 'helo', 'world'] #把执行脚本时传递的参数获取到了
### 模块:os
import os
os.system("df -h") #调用系统命令
### 可以对模块解析结合:os、sys
import os,sys
os.system(''.join(sys.argv[1:])) #把用户的输入的参数当作一条命令交给os.system来执行
print(sys.path) 可以查看python环境变量列表。
当python程序第一次运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。
当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程(第一次运行)。
pyc文件其实是PyCodeObject的一种持久化保存方式。
五、数据类型
int(整型):
long(长整型):
float(浮点型):
complex(复数):复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
布尔值:真或假、1 或 0
字符串:
name = "alex"
print "i am %s " % name
#输出: i am alex
### 字符串是 %s;整数 %d;浮点数%f
六、字符串输出方式的实例
# 定义变量
name="YGB"
print("name=",name)
name1=name
print("name1=",name1)
name="WBD"
print("name=",name,"name1=",name1)
"""
name赋值,name的值赋予name1,当name的值被改变,那么name1的值也不会改变。
当name的值被改变,name就会指向一个崭新的内存位置,name1为原理内存。
"""
age=24
# 字符串拼接:+ ;的拼接方式会开辟好几块内存,效率低。
info='''我爱的人:'''+name+'''他爱的人:'''+name1
info1='''大家爱的人:%s -- 那个憨憨的人:%s''' % (name,name1)
info1='''大家爱的人:%s -- 今年贵庚:%d -- 那个憨憨的人:%s''' % (name,age,name1)
### 字符串拼接,拼接过程需要对应数据类型(创建多块内存)
info = '''名字:'''+ name +'''年龄:'''+ age
### 这个输出顺序必须一致:%s接收字符串,%d接收整数,%f接收浮点类型
info = '''名字:%s,年龄:%s'''%(name,age)
### 现在多数使用该方法拼接
info = '''名字:{_a},年龄:{_b}'''.format(_a=name,_b=age)
info = '''名字:{0},年龄:{1}'''.format(name,age)
info='''aaa={_name},bbb={_age},ccc={_name1}'''.format(_name=name,_age=age,_name1=name1)
info='''AAA={0},BBB={0},CCC={1},DDD={2}'''.format(name,age,name1)
print(info)