目前Python主要应用领域:
编程语言主要从以下几个角度为进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.
一、低级语言与高级语言
最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果。后来为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些与机器指令一一对应的助记符就成了汇编指令,从而诞生了汇编语言。无论是机器指令还是汇编指令都是面向机器的,统称为低级语言。因为是针对特定机器的机器指令的助记符,所以汇编语言是无法独立于机器(特定的CPU体系结构)的。但汇编语言也是要经过翻译成机器指令才能执行的,所以也有将运行在一种机器上的汇编语言翻译成运行在另一种机器上的机器指令的方法,那就是交叉汇编技术。
高级语言是从人类的逻辑思维角度出发的计算机语言,抽象程度大大提高,需要经过编译成特定机器上的目标代码才能执行,一条高级语言的语句往往需要若干条机器指令来完成。高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的。那具体的说,要将高级语言编译到什么程度呢,这又跟编译的技术有关了,既可以编译成直接可执行的目标代码,也可以编译成一种中间表示,然后拿到不同的机器和系统上去执行,这种情况通常又需要支撑环境,比如解释器或虚拟机的支持,Java程序编译成bytecode,再由不同平台上的虚拟机执行就是很好的例子。所以,说高级语言不依赖于机器,是指在不同的机器或平台上高级语言的程序本身不变,而通过编译器编译得到的目标代码去适应不同的机器。从这个意义上来说,通过交叉汇编,一些汇编程序也可以获得不同机器之间的可移植性,但这种途径获得的移植性远远不如高级语言来的方便和实用性大。
1 通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。 2 3 (1)动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。 4 5 (2)静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。
(1)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。
(2)弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。
通过上面这些介绍,我们可以得出,python是一门动态解释性的强类型定义语言。
当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。
Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性
1、下载安装包
https://www.python.org/downloads/
2、安装
默认安装路径:C:\python27
3、配置环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
如:原来的值;C:\python27,切记前面有分号
无需安装,原装Python环境
声明变量
1 #_*_coding:utf-8_*_ 2 3 name = "hl"
上述代码声明了一个变量,变量名为: name,变量name的值为:"hl"
变量定义的规则:
变量的赋值
1 name = "hl" 2 name2 = name 3 print(name,name2) 4 name = "hello world" 5 print(name,name2)
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)
ASCII(美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。
关于中文
1980年的GB2312
1995年的 GBK1.0
2000年的 GB18030
从ASCII、GB2312、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集。
显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存
当行注视:# 被注释内容
多行注释:""" 被注释内容 """
1 #!/usr/bin/env python 2 #-*-coding:utf-8-*- 3 4 #name = raw_input("What is your name?") #only on python 2.x 5 name = input("What is your name? ") 6 print("Your name is",name)
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import getpass 6 pwd = getpass.getpass("请输入密码:") 7 print(pwd)
1 #!/usr/bin/env python 2 #-*-coding:utf-8-*- 3 #Author:martin 4 5 name = input("your name is:") 6 age = int(input("your age is:")) 7 print(type(age),type(str(age))) 8 job = input("your job is:") 9 print(name,age,job) 10 11 info = ‘‘‘info of {_name} 12 name: {_name} 13 age: {_age} 14 job: {_job} 15 ‘‘‘.format(_name=name, 16 _age=age, 17 _job=job) 18 19 print(info) 20 21 info2 = ‘‘‘ info of %s 22 name: %s 23 age: %d 24 job:%s 25 ‘‘‘ % (name,name,age,job) 26 27 print(info2) 28 29 30 info3 = ‘‘‘info of {0} 31 name: {0} 32 age: {1} 33 job: {2} 34 ‘‘‘.format(name,age,job) 35 36 print(info3) 37 38 39 info4 = ‘‘‘ info of ‘‘‘ + name + ‘‘‘ 40 name: ‘‘‘ + name + ‘‘‘ 41 age: ‘‘‘ + age + ‘‘‘ 42 job: ‘‘‘ + job 43 44 print(info4)
1 #Author:martin 2 for i in range(1,10,2): 3 print("number:",i) 4 5 for i in range(10): 6 if i < 3: 7 print("number",i) 8 else: 9 break 10 print("hehe")
1 #!/usr/bin/env python 2 # -*-coding:utf-8-*- 3 #Author:martin 4 _username = "hl" 5 _password = "123" 6 7 count = 0 8 while count < 3: 9 username = input("username:") 10 password = input("password:") 11 if username == _username and password == _password: 12 print("Welcome to login:{name}".format(name=username)) 13 break 14 count +=1 15 else: 16 print("you try too much ,bye!")
1 #!/usr/bin/env python 2 age_of_oldboy = 40 3 count =0 4 while count < 3: 5 guess_age = int(input("your guess_age: ")) 6 if guess_age == age_of_oldboy: 7 print("yes ,you get it.") 8 break 9 elif guess_age > age_of_oldboy: 10 print("think smaller.") 11 else: 12 print("think bigger.") 13 count +=1 14 else: 15 print("You try too much ,byebye!")
1 #!/usr/bin/env python 2 #Author:martin 3 age_of_oldboy = 40 4 count = 0 5 while count < 3: 6 guess_age = int(input("your guess age:")) 7 if age_of_oldboy == guess_age: 8 print("Yse,you are righi.") 9 break 10 elif age_of_oldboy > guess_age: 11 print("guess bigger!") 12 else: 13 print("guess smaller!") 14 count +=1 15 if count == 3: 16 print("would like continue to geussing?") 17 continue_config = input("[y/n]:") 18 if continue_config != "n": 19 count = 0
Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持
sys
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import sys 5 print(sys.path) #获取系统路径 6 print(sys.argv) #获取系统参数
os
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import os,sys 5 cmd_res = os.system("dir") #调用系统命令,单纯的输出显示 6 print("---->",cmd_res) 7 cmd_res = os.popen("dir").read() #输出到内存中,通过read读取 8 print("---->",cmd_res)
自己写个模块
python tab补全模块
1 import sys 2 import readline 3 import rlcompleter 4 5 if sys.platform == ‘darwin‘ and sys.version_info[0] == 2: 6 readline.parse_and_bind("bind ^I rl_complete") 7 else: 8 readline.parse_and_bind("tab: complete") # linux and python3 on mac 9 10 for mac
1 #!/usr/bin/env python 2 # python startup file 3 import sys 4 import readline 5 import rlcompleter 6 import atexit 7 import os 8 # tab completion 9 readline.parse_and_bind(‘tab: complete‘) 10 # history file 11 histfile = os.path.join(os.environ[‘HOME‘], ‘.pythonhistory‘) 12 try: 13 readline.read_history_file(histfile) 14 except IOError: 15 pass 16 atexit.register(readline.write_history_file, histfile) 17 del os, histfile, readline, rlcompleter 18 19 for Linux
import tab
你会发现,上面自己写的tab.py模块只能在当前目录下导入,如果想在系统的何何一个地方都使用怎么办呢? 此时你就要把这个tab.py放到python全局环境变量目录里啦,基本一般都放在一个叫python/3.6/site-package 目录下,这个目录在不同的os里放的文职不一样,用print(sys.path)可以查到python的环境变量列表。
原文:http://www.cnblogs.com/jmaly/p/6681548.html