1.Python 简介
python 的创始人为吉多. 范罗苏姆 (Guido van Rossum).1989 年的圣诞节期间, 吉多. 范罗苏姆为了在阿姆斯特丹打发时间, 决心开发一个新的脚本解释程序, 作为 ABC 语言的一种继承. Python 崇尚优美, 清晰, 简单, 是一个优秀并广泛使用的语言.
Python 是一样什么类型的语言
Python 是一种强类型定义的解释型的动态语言.
强类型与弱类型语言的区别:
强类型定义语言
一种总是强制类型定义的语言. Java 和 Python 是强制类型定义的. 如果你有一个整数, 如果不显示地进行转换, 你不能将其视为一个字符串. 如果你定义了一个整型变量 a, 那么程序根本不可能将 a 当作字符串类型处理. 强类型定义语言是类型安全的语言.
弱类型定义语言
数据类型可以被忽略的语言. 它与强类型定义语言相反, 一个变量可以赋不同数据类型的值. 常见有 vb,php.
静态类型与动态类型的区别:
静态类型定义语言
一种在编译时, 数据类型是固定的语言. 大多数静态类型定义语言强制这一点, 它要求你在使用所有变量之前要声明它们的数据类型. Java 和 C 是静态类型定义语言.
动态类型定义语言
一种在执行期间才去发现数据类型的语言, 与静态类型定义相反. VBScript 和 Python 是动态类型定义的, 因为它们是在第一次给一个变量赋值的时候找出它的类型的.
解释型与编译型语言的区别:
解释型语言
解释型是在运行的时候将程序翻译成机器语言, 所以运行速度相对于编译型语言要慢. 例如 Python,C#,java
编译型语言
编译型语言在程序执行之前, 有一个单独的编译过程, 将程序翻译成机器语言, 以后执行这个程序的时候, 就不用再进行翻译了. 例如 C/C++
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 的存在, 所以禁止多线程的并行执行.
2.Hello World 程序
因为 python2 与 python3 在用户输入上有所区别, 但考虑到接下来 python3 迅速普及, python 上一些鸡肋的操作被取消, 所以接下来的代码都以 python3 为准.
hello world 程序
- print('Hello World!') #直接输出在屏幕上, Linux 上有自带的 python
- # 创建文件执行即可, Windows 上可以用下在的 shell 下执行
用户输入:
a = input('请输入内容:') #该程序执行后会提示用户输入
用户输入的内容会别赋值给变量 a. 注意用户输入的内容会被定义为字符串, 即使输入的是数字, 也会被定义为字符串, 想要得到对应的数值类型, 必须用对应的方法进行转换.
b = int(input('请输入一个数字:')) #输入的数值为字符串, 但会经过 int 转换为整型.
3. 变量的定义规则
只能是由字母, 数字, 和下划线组成.
必须是由字母或下划线开头.
不能是关键字.
最好每个变量为英文单词, 有一定的意义, 方便阅读代码.
若想要定义一个不被人修改的变量, 可以全部由大写字母组成.
1 name = 'wallace' #即姓名为 wallace
4. 常用的数值类型
常见的数值类型有整形 (int), 浮点型 (float), 布尔型 (bool), 复数型 (complex), 定义这些类型很容易, 因为是强类型定义的语言, 所以会直接识别是什么类型. 例如:
- a = 1 #int 类型
- b = 1.2 #float 类型
- c = True #bool 类型
- d = 1+2j #complex 类型
5. 常见数据类型 (列表, 元组)
下面将会介绍两种常见的数据类型列表和元组, 这里会通过实例来介绍这两数据类型.
列表 (list):
- li = [1,2,'a','list'] #列表内的元素用逗号隔开, 列表内元素可以为大多数数据类型
- li1 = [1,3,[3,4],'wallace'] #列表本身也可以作为元素
索引和切片:
- li = [1,2,4,'a'] #定义一列表
- >>li[1] #索引的起始为 li[0]
- 2
- >>li[-1] #可以从末尾开始索引
- 'a'
- >>li[0:2] #切片原则为左闭右开, 即取左不取右
- 1,2
- >>li[2:] #若想去最后面的数据, 可什么数据都不写
- 4,'a'
- >>li[-2:-1] #也可以有负数切片
- 4,'a'
list 增加元素:
- >>li = [1,3,4]
- >>li.append('a') #在末尾添加元素
- >>li
- [1,3,4,'a']
- >>li.insert(2,'b') #在指定位置添加一个元素
- >>li
- [1,3,'b',4,'a']
- >>li.extend([2,'c']) #添加多个元素, 即扩展列表
- >>li
- [1,3,'b',4,'a',2,'c']
list 搜索:
- >>li = [1,3,'b',4,'a',2,'c']
- >>li.index('b') #返回对应元素的索引位置, 若不存在则会报错
- 2
list 删除:
- >>li = [1,3,'b',4,'a',2,'c',3]
- >>li.remove(3) #移除首次出现的对应的值
- >>li
- [1,'b',4,'a',2,'c',3]
- >>li.pop() #弹出列表最末尾的值
- 3
- >>li
- [1,'b',4,'a',2,'c']
元组 (tuple):
- tu = (1,2,3,[2,3]) #元组就是将列表的中括号改为小括号
- tu2 = 'a','b' #这种方式定义的也是一个元组
- tu = 1, #注意必须有一个逗号才能表示一个元组
可能大家会有疑问, 为什么有列表还定义一个元组, 这不是多余吗, 当然不是: 列表是有序的集合, 可以随时添加和删除其中的元素. 元组是不可变的, 即一旦定义好后不可对其添加, 修改以及删除.
来源: http://www.bubuko.com/infodetail-2563866.html